0

我正在研究 8085 微处理器,我遇到了一条指令 - ADC。

在这个例子中,他们给了累加器 [A] = 57H 和一个寄存器 [D] = 33H 并且最初设置了进位,所以 [CY] = 01H

指令:ADC D 他们添加了 57H、33H 和 01H

0 1 0 1 1 1 1 1

0 0 1 1 0 0 1 1

0 0 0 0 0 0 0 1

答案:1 0 0 1 0 0 1 1。

他们说符号标志现在设置为 MSB 包含较高位。我不明白为什么答案被认为是否定的,即使进行了加法运算。

4

1 回答 1

0

根据定义,它是负面的。在二进制补码下,任何设置了最高位的数字都是负数。57 + 33 + 1 = 8B,其中设置了最高位。因此它是一个负数。

在您的情况下,不幸的是寄存器不够大,无法保存真实结果。如果它是一个 16 位寄存器,您将计算出 0057 + 0033 + 0001 = 008B,它没有设置最高位。如果您打算保留带符号的数字,那么您已经丢失了信息——您无法再判断这是否真的意味着十进制 139 或 -117。但是,如果您纯粹使用无符号数字工作,那么您可以忽略符号标志。你知道它不适用。

您还可以使用溢出标志来检查结果是否有错误的符号。如果两个正数似乎产生负数,或者如果两个负数似乎产生正数,则将溢出设置为加法。

在您的情况下,应设置符号和溢出。

于 2017-03-15T13:53:47.320 回答