【问题标题】:ADDC versus ADDADDC 与 ADD
【发布时间】:2014-03-10 18:46:36
【问题描述】:

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

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

ADDC 如何“将进位标志添加到结果中”?结果在累加器里面,怎么加进位标志呢?

目前,在我看来,它们是这样工作的:

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

这个结果是A = 0x01C = 1

使用 ADDC,

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

这个结果是A = 0x01C = 1

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

【问题讨论】:

  • “添加进位标志”仅表示“如果设置了进位标志,则增加”

标签: assembly 8051


【解决方案1】:

这是相关的加法之前的进位标志的值。 ADDC 将其包含在总和中,而 ADD 则不包含。

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

ADD 仅将 X + Y 存储在 X 中。

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

【讨论】:

    【解决方案2】:

    在您的每种情况下,执行以下操作:

    ADD A, #0x01
    

    和:

    ADDC A, #0x01
    

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

    【讨论】:

      猜你喜欢
      • 2014-11-20
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 2010-10-06
      • 2013-04-06
      相关资源
      最近更新 更多