我试图找出8051 微控制器ADDC和ADD指令之间的区别。
说明:
ADD与ADDC这两个数值操作数增加了累加器的值,留在累加器结果值。值操作数不受影响。ADD和ADDC功能相同,只是ADDC将操作数的值与进位标志的值ADD相加,而不将进位标志添加到结果中。
ADDC 如何“将进位标志添加到结果中”?结果在累加器中,它如何为其添加进位标志?
目前,正如我所见,以下是它们的工作方式:
MOV A, #0xFF
ADD A, #0x01
Run Code Online (Sandbox Code Playgroud)
这样做的结果是A = 0x01和C = 1
有了 ADDC,
MOV A, #0xFF
ADDC A, #0x01
Run Code Online (Sandbox Code Playgroud)
这样做的结果是A = 0x01和C = 1
也许我的测试不正确或什么的。有人可以解释 ADD 和 ADDC 之间的区别吗?
相关的是加法之前的进位标志的值。ADDC包括在总和中,而ADD没有。
ADDC X, Y存储 X + Y + 进位X。
ADD只将 X + Y 存储在X.
这样做的目的是允许对多字“大整数”进行链式加法。这是通过从最不重要到最重要的顺序添加每个单词来实现的。使用 ADDC 可确保将先前添加的进位带入下一个更高的有效字。