【问题标题】:how to use CLR and JC in assembly?如何在汇编中使用 CLR 和 JC?
【发布时间】: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 没有集成太多。

标签: assembly emu8086


【解决方案1】:

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

emu8086抛出非法指令的原因是因为CLR指令不属于8086指令集,实际上是8051单片机的指令。该指令用于清除进位标志(设置进位标志为 0)或清除 8051 单片机中寄存器的内容。另一方面,清除emu8086 中的进位标志可以使用CLC 指令来完成。

8051 组装工具

可用于8051组装的工具是Keil Development tool for 8051 Micro-controller,您可以通过关注thesehere下载相同的工具指示。对于学习 8051 组装的教程,您可以观看 these 视频。

【讨论】:

    猜你喜欢
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    相关资源
    最近更新 更多