ADDC 与 ADD

use*_*391 4 assembly 8051

我试图找出8051 微控制器ADDCADD指令之间的区别。

说明:ADDADDC这两个数值操作数增加了累加器的值,留在累加器结果值。值操作数不受影响。ADDADDC功能相同,只是ADDC将操作数的值与进位标志的值ADD相加,而不将进位标志添加到结果中。

ADDC 如何“将进位标志添加到结果中”?结果在累加器中,它如何为其添加进位标志?

目前,正如我所见,以下是它们的工作方式:

MOV A, #0xFF
ADD A, #0x01  
Run Code Online (Sandbox Code Playgroud)

这样做的结果是A = 0x01C = 1

有了 ADDC,

MOV A, #0xFF
ADDC A, #0x01  
Run Code Online (Sandbox Code Playgroud)

这样做的结果是A = 0x01C = 1

也许我的测试不正确或什么的。有人可以解释 ADD 和 ADDC 之间的区别吗?

Typ*_*eIA 5

相关的是加法之前的进位标志的值。ADDC包括在总和中,而ADD没有。

ADDC X, Y存储 X + Y + 进位X

ADD只将 X + Y 存储在X.

这样做的目的是允许对多字“大整数”进行链式加法。这是通过从最不重要到最重要的顺序添加每个单词来实现的。使用 ADDC 可确保将先前添加的进位带入下一个更高的有效字。