首页 > 解决方案 > 8051微处理器中的累加器寄存器

问题描述

我们的任务是在下一个代码中识别问题:

ORG 0000H
MAIN:
    CLR A
    MOV A, FFFFH
    MOV B, FFH
AGAIN: DEC A
    DJNZ B, AGAIN
END

OnMOV A, FFFFH并且MOV B, FFHEdSim51 有一个

FFFFHFFH上的未知标签。

我对这种类型的代码没有任何经验。我认为这是每个寄存器所拥有的位数,但我不确定。谁能给我解释一下。

标签: assemblycpu-registers8051accumulator

解决方案


该指令MOV可以与不同的操作数一起使用。在您的情况下,汇编程序会查找“立即值”。这可以作为标签或文字数字给出。

对于我们人类来说,两者FFFFHFFH看起来都是文字数字,因为我们识别十六进制数字和末尾的“H”。

但是该软件使用了一种最简单的方法:如果第一个字符是十进制数字,则操作数是文字数字。如果它是一个字母,它就是一个标签。

这就是为什么 EdSim51(或其汇编程序,分别)将它们作为标签。由于没有定义任何标签,它会报告您得到的错误。

但是,如果您在两者前面都放一个零“0”,导致0FFFFHand 0FFH,第一条指令可能会给您另一个错误:该值对于指令来说太大了,该指令需要 8 位宽度。


推荐阅读