【发布时间】:2017-01-28 16:52:46
【问题描述】:
当我准备下周学校的汇编/处理器架构考试时,我遇到了一些相当令人困惑的事情。
在执行二进制加法时,我们了解了 4 个条件标志:
N = 结果是否定的
Z = 结果为零
C = 操作产生进位
V = 操作产生的溢出
但我对是否必须在溢出时设置 N 标志感到困惑。
让我们以 6+7 的二进制补码中的 4 位加法为例:
0110
0111+
-----
1101 = result
现在,当用二进制补码计算 4 位时,这显然会导致溢出。结果应该是 13(5 位中的 01101),但结果是 -3,因为它只能以 4 位显示。 所以我的问题是,在这种情况下是否也设置了 Negative flag N ?因为结果是负数。
【问题讨论】:
-
是的,已经设置好了。 N 标志只是最高有效位的副本。当然也可以设置不溢出。