【发布时间】:2017-12-12 16:47:18
【问题描述】:
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
我从一本书中得到了这个代码,但是当我使用该代码时显示错误
(10)非法指令:CLR C或错误参数。
(13)非法指令:CLR AL或参数错误。
(21)非法指令:CLR C或错误参数。
(42) 未声明标签:JC DISP1
如何解决这些错误?
【问题讨论】:
-
CLR C似乎是 8051 指令,而不是 8086 指令。CLR C你从哪本书上得到的? -
您的
DISP1标签缺少冒号 -
它不起作用,因为您似乎在使用来自 8051 套件的信息。您的书是否谈论 8051 和 8086?如果这是针对您的课程的,我认为您需要与教授或助教交谈,以使您走上正确的道路。在这里我很清楚你很困惑。由于我们看不到您的源材料,因此很难提供帮助。可以告诉你Flight-8086训练板代码不会在emu8086中运行,
clr c是8051指令,不是8086指令。祝你好运。 -
您正在使用仿真 8086 和典型 BIOS/DOS 中断的 emu08086。它不会模拟您的飞行板(8086 航班上的中断与普通 PC 不同)。您在这里使用了错误的工具。有飞行板,为什么选择EMU8086?或者你有飞行板吗?您是否使用 EMU8086 生成二进制文件,然后将其放在飞行板上? EMU8086 不会按照您期望的方式运行代码。
-
@MichaelPetch 谢谢;因为这个名字,我倍加好奇——在我听说 A340 FCS 使用 x86 处理器用于一半计算机(另一半是 m86k)之后,我认为这块板可能与飞行系统有关。有点牵强,我知道 - 你链接我的板看起来更像是一个大的 Arduino,因为除了 CPU 之外,micros 没有集成太多。