【问题标题】:Accumulator register in 8051 microprocessor8051微处理器中的累加器寄存器
【发布时间】:2020-09-25 08:03:52
【问题描述】:

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

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

MOV A, FFFFHMOV B, FFH EdSim51 有一个

FFFFHFFH 上都有未知标签。

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

【问题讨论】:

标签: assembly cpu-registers 8051 accumulator


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2014-01-06
    • 2016-05-13
    • 2017-05-07
    • 2021-03-03
    • 2014-07-19
    相关资源
    最近更新 更多