Assembly 8051微处理器中的累加器寄存器

Assembly 8051微处理器中的累加器寄存器,assembly,cpu-registers,8051,accumulator,Assembly,Cpu Registers,8051,Accumulator,我们的任务是在下一个代码中识别问题: ORG 0000H MAIN: CLR A MOV A, FFFFH MOV B, FFH AGAIN: DEC A DJNZ B, AGAIN END 在MOV A、FFFFH和MOV B上,FFH EdSim51具有 FFFFH和FFH上的未知标签 我对这类代码没有任何经验。我想这取决于每个寄存器的位数,但我不确定。有人能给我解释一下吗。指令MOV可以与不同的操作数一起使用。在您的情况下,汇编程序将查找立即值。这可以作为

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

ORG 0000H
MAIN:
    CLR A
    MOV A, FFFFH
    MOV B, FFH
AGAIN: DEC A
    DJNZ B, AGAIN
END
在MOV A、FFFFH和MOV B上,FFH EdSim51具有

FFFFH和FFH上的未知标签

我对这类代码没有任何经验。我想这取决于每个寄存器的位数,但我不确定。有人能给我解释一下吗。

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

对于我们人类来说,FFFFH和FFH看起来都是文字数字,因为我们能识别十六进制数字和结尾的H

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

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

但是,如果将0放在这两条指令的前面,导致0FFFFH和0FFH,则第一条指令可能会出现另一个错误:该值对于该指令来说太大,需要8位宽度。

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

对于我们人类来说,FFFFH和FFH看起来都是文字数字,因为我们能识别十六进制数字和结尾的H

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

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


但是,如果在这两条指令前面都加上0,则会产生0FFFFH和0FFH,第一条指令可能会出现另一个错误:该值对于该指令来说太大,它需要8位宽度。

这根本不是8086/x86代码。8051我想,基于EdSim51名称。未知标签问题是//的重复。FFH被认为是一个标签名,因为它不像0FFHB那样以十进制数字开头,但是的,我认为8051寄存器只有8位,所以您的汇编程序会警告截断0FFFFh。对于混淆,这是我第一次这样做。感谢您的回复,这根本不是8086/x86代码。8051我想,基于EdSim51名称。未知标签问题是//的重复。FFH被认为是一个标签名,因为它不像0FFHB那样以十进制数字开头,但是的,我认为8051寄存器只有8位,所以您的汇编程序会警告截断0FFFFh。对于混淆,这是我第一次这样做。谢谢你的回复。