+ -
当前位置:首页 → 问答吧 → 标志寄存器SF与补码运算

标志寄存器SF与补码运算

时间:2011-03-06

来源:互联网

cmp 操作数1,操作数2
书上在讲解标志寄存器SF 与两操作对象的大小关系是,举例如下:
 cmp ah,bh
(ah)=22H (bh)=0a0H
则:(ah)-(bh)=34-(-96)=82H,82H是-126的补码所以,SF=1,从这里可以得出结论:SF=1并不能说明操作数1一定小于操作数2。


问题是:
  进行有符号运算时,里面的22H,0a0H都表示补码,他们俩再换算为源码后进行运算,所以我就想那它俩运算后得到的因该是源码,而且正操作数减去负操作数,得到的结果是正的82H,这也合情合理。

  可是,为什么,82H此时不能代表一个源码,而是-126的补码呢?求解释!!!

作者: gchz1990   发布时间: 2011-03-06

cmp ah,bh相当于sub ah,bh 只是只使用它对标志位的设置,不保存差。

如果换成sub,那结果82H是在ah中存放的,ah是8位寄存器,82H的最高位是1,所以当有符号数看时,它表示的是一个负数。

作者: shzhfu   发布时间: 2011-03-06

补充一下:SF不是因为它是-126后才设置的,而是因为82H的最高位是1,所以SF=1的.

作者: shzhfu   发布时间: 2011-03-06