2

如果我有下表:

Case 1:    x: 42           y: -15           (y-x) = -57 
Case 2:    x: -17          y: -17           (y-x) = 0
Case 3:    x: 0x7ffffffd   y: -67           (y-x) = 2147483584
Case 4:    x: 67           y: -0x7fffffffd  (y-x) = 2147483584

ZF SF OF条件代码标志会设置什么(每个标志为零或一个)CF

在考虑指令时:cmp1 %eax %ecx 如果%eax包含x%ecx包含y

我了解这cmp1 ...,...是由以下人员执行的:cmp1 SRC2,SRC1

这意味着:“设置条件代码SRC1- SRC2

我了解这些标志代表:

OF = overflow (?)
ZF = zero flag i.e. zero...
CF = carry out from msb
SF - sign flag i.e. negative

对于表中的四个案例,我相信标志将是:

1) ZF = 0 SF = 1 CF = 0 OF = ?
2) ZF = 1 SF = 0 CF = 0 OF = ?
3) ZF = 0 SF = 0 CF = 1 OF = ?
4) ZF = 0 SF = 0 CF = 1 OF = ?

我对么?请解释什么CFOF是以及如何确定是否将设置为 TRUE,并纠正我的任何有缺陷的理解。谢谢你。

4

1 回答 1

1

当算术运算产生无法放入寄存器的进位时,就会发生进位溢出。因此,如果您有 8 位寄存器,并且想要添加 10000000 和 10000000(无符号):

 10000000
 10000000
 --------
100000000

这个 1 是最高有效位的进位,因此设置 CF = 1。

您可能还想检查这个其他答案

于 2013-11-04T22:08:36.530 回答