2010-05-24 38 views
1

假设AX = FFFE和BX =现在如果我们写1234
cmp ax,bx
(BX将从AX中减去和approprite flages将被更新) 现在斧和BX数字的二进制表示由进位旗问题!

给出
AX = 1111 1111 1111 1110 
    BX=  0001 0010 0011 0100 


如BX将从斧所以我们必须否定BX被减去(作为结果= AX +( - BX)) 所以否定BX(2的BX的补码)由下式给出。

BX= 1110 1101 1100 1100 

现在我们添加两斧和BX(如减法是通过另外的计算机实现的)现在

AX= 1111 1111 1111 1110 
    BX= 1110 1101 1100 1100 
    ------------------------------------ 
     1 1110 1101 1100 1010 

正如你所看到的结果是17位的,现在的第17位应进入瑕疵,但是当我检查它的进位标志是0就是CF = 0为什么?

回答

1

当执行减法时,将进位标志看作借位。它被初始化为1,所以操作是a−b−C,即a + not(b) + C而不是你所描述的a + not(b) + 1。换句话说,进位被反转以减去,所以它可以用来做多精度相减。