ADDC与ADD

时间:2014-03-10 18:46:36

标签: assembly 8051

我正在试图找出8051微控制器的ADDC和ADD指令之间的区别。

  

描述:描述:ADD和ADDC都将值操作数添加到累加器的值,将结果值保留在累加器中。值操作数不受影响。 ADD和ADDC功能相同,只是ADDC添加了操作数的值以及Carry标志的值,而ADD没有将Carry标志添加到结果中。

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

目前,正如我所看到的,以下是它们的工作原理:

MOV A, #0xFF
ADD A, #0x01  

结果是A = 0x01C = 1

使用ADDC,

MOV A, #0xFF
ADDC A, #0x01  

结果是A = 0x01C = 1

也许我的测试不对或类似。有人可以解释ADD和ADDC之间的区别吗?

2 个答案:

答案 0 :(得分:3)

在添加相关之前,进位标志的值。 ADDCADD包含在总和中,而ADDC X, Y则不包括。

X存储X + Y +进入ADD

X仅在{{1}}中存储X + Y.

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

答案 1 :(得分:1)

在每个案例中,请执行以下操作:

ADD A, #0x01

ADDC A, #0x01

在第一种情况下,您应该看到A = 0x02和第二个A = 0x03。设置进位标记后,ADDC除了要添加到1的值外,还会为进位标记添加A