Assembly 如何在汇编中使用CLR和JC?
我从一本书中得到了这个代码,但是当我使用这个代码时,会显示错误 (10) 指令非法:CLR C或参数错误 (13) 指令非法:CLR AL或参数错误 (21)指令非法:CLR C或参数错误 (42)未声明的标签:JC DISP1 如何修复这些错误?为什么会出现非法指令错误? emu8086抛出非法指令的原因是指令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
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