标志寄存器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的补码呢?求解释!!!
书上在讲解标志寄存器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,所以当有符号数看时,它表示的是一个负数。
如果换成sub,那结果82H是在ah中存放的,ah是8位寄存器,82H的最高位是1,所以当有符号数看时,它表示的是一个负数。
作者: shzhfu 发布时间: 2011-03-06
补充一下:SF不是因为它是-126后才设置的,而是因为82H的最高位是1,所以SF=1的.
作者: shzhfu 发布时间: 2011-03-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28