Assembly 如何在汇编中使用CLR和JC?

Assembly 如何在汇编中使用CLR和JC?,assembly,emu8086,Assembly,Emu8086,我从一本书中得到了这个代码,但是当我使用这个代码时,会显示错误 (10) 指令非法:CLR C或参数错误 (13) 指令非法:CLR AL或参数错误 (21)指令非法:CLR C或参数错误 (42)未声明的标签:JC DISP1 如何修复这些错误?为什么会出现非法指令错误? emu8086抛出非法指令的原因是指令CLR不属于8086指令集,实际上它是8051微控制器的指令。此指令用于清除进位标志(将进位标志设置为0)或清除8051微控制器中寄存器的内容。另一方面,可以使用CLC指令清除emu80

我从一本书中得到了这个代码,但是当我使用这个代码时,会显示错误

(10) 指令非法:CLR C或参数错误

(13) 指令非法:CLR AL或参数错误

(21)指令非法:CLR C或参数错误

(42)未声明的标签:JC DISP1

如何修复这些错误?

为什么会出现非法指令错误?

emu8086抛出非法指令的原因是指令
CLR
不属于8086指令集,实际上它是8051微控制器的指令。此指令用于清除进位标志(将进位标志设置为0)或清除8051微控制器中寄存器的内容。另一方面,可以使用
CLC
指令清除emu8086中的进位标志

用于8051组装的工具


可用于8051组装的工具是用于8051微控制器的Keil Development Tool,您可以按照以下说明从下载该工具。对于学习8051汇编的教程,您可以观看视频。

CLR C
似乎是8051指令,而不是8086指令。您从哪本书中获得的
CLR C
?您的
DISP1
标签缺少一个colonIt无法工作,因为它看起来您正在使用8051工具包中的信息。你的书讲的是8051和8086吗?如果这是你的课程,我想你需要和教授或助教谈谈,让你走上正确的道路。我在这里很清楚,你感到困惑。很难帮上忙,因为我们看不到你的原始资料。可以告诉您Flight-8086训练板代码不会在emu8086中运行,并且
clr c
是8051指令,而不是8086指令。祝你好运。你正在使用Emu0886,它模拟8086和典型的BIOS/DOS中断。它不模拟您的飞行板(飞行8086上的中断与普通PC不同)。你用错工具了。如果您有航班板,为什么选择EMU8086?或者你有登机牌吗?您是否使用EMU8086生成二进制文件,然后将其放在您的航班板上?EMU8086不会以您期望的方式运行代码。@MichaelPetch谢谢;我对这个名字倍感好奇——当我听说A340未来作战系统的一半计算机使用x86处理器(另一半是m86k)后,我认为这个板可能与飞行系统有关。有点牵强,我知道-你链接我的电路板看起来更像是一个大的Arduino,因为当时micros除了CPU之外没有集成太多。
     ORG 0100H
INIT:               
        MOV AL,99H
        OUT 06,AL
        MOV AL,0
        OUT 02,AL
        MOV TEMP,01DH
LOOP:   CALL ADC
        CALL HEX2ASC
        CLR C
    SUB AL,TEMP
    JC TEMPLO
    CLR AL
    JMP TEMP1
TEMPLO: MOV AL,20H
TEMP1:  OUT 02,AL
        JMP LOOP
ADC:    IN AL,00
        MOV BL,AL
    IN AL,00
    CLR C
    SUB AL,BL
    JNZ ADC
    MOV AL,BL
    RET
HEX2ASC: PUSH AX
        MOV CL,4
    ROR AL,CL
    CALL DISPLAY
    POP AX
    CALL DISPLAY
    MOV CX,2
BACKSP: PUSH CX
        MOV AL,08
    CALL FPUTC
    POP CX
    DEC CX
    JNZ BACKSP
    RET
DISPLAY: AND AL,0FH
        CMP AL,0AH
    JC DISP1
    ADD AL,7
DISP1   ADD AL,30H
        CALL FPUTC
    RET
FPUTC:  PUSHF 
        PUSH DX 
    PUSH CX 
    PUSH AX
        XOR CX,CX
    MOV ES,CX
    MOV BYTE PTR ES:[01E5],5E
    MOV AH,24
    MOV ES:[01E5+1],AX
    MOV AL,06
    INT 06
    POP AX
    POP CX
    POP DX
    POPF 
    RET A
TEMP:    DS 1