关于汇编溢出问题
时间:2011-06-15
来源:互联网
(ah)=22H (bh)=0a0H 则(ah)-(bh)=34-(-96)=82H 82H 是 -126的补码
请问 这个算不算溢出 因为 34-(-96)应该等于130 现在 根据上面算出来却是 -126
现在 我们来 将上面的 算数 用二进制演示下:
34 00100010
- (-96) -10100000
________ === _______________
10000010 (82H)
可见 用34 减去 -96 的时候借位了,但是书上的溢出概念是 两数相加 产生溢出 ,现在的情况却是两数相减也 能产生溢出,溢出的概念是 第七位或者第六位 其中一个有进位(注意是进位),上面的演示却是 借位 ,也就是说不符合 溢出的概念 ,但是 不是溢出的话 ,结果就应该正确,请解释 。
请问 这个算不算溢出 因为 34-(-96)应该等于130 现在 根据上面算出来却是 -126
现在 我们来 将上面的 算数 用二进制演示下:
34 00100010
- (-96) -10100000
________ === _______________
10000010 (82H)
可见 用34 减去 -96 的时候借位了,但是书上的溢出概念是 两数相加 产生溢出 ,现在的情况却是两数相减也 能产生溢出,溢出的概念是 第七位或者第六位 其中一个有进位(注意是进位),上面的演示却是 借位 ,也就是说不符合 溢出的概念 ,但是 不是溢出的话 ,结果就应该正确,请解释 。
作者: zhaomcu 发布时间: 2011-06-15
给你一个简单的例程:
CODE SEGMENT
ASSUME CS: CODE
BEGIN:
JMP INSTALL
INSTALL:
MOV AX, CS
MOV DS, AX
MOV AH, 22H
MOV BH, 0A0H
SUB AH, BH
MOV AH, 4CH
INT 21H
CODE ENDS
END
在执行“SUB AH, BH”之后,请对比标志位,你会发现有溢出标志和进位标志,说明结果是溢出的。
结果“82H”就是130,一点儿都没有错的,要是你硬要将其视为有符号数,那么它表示的就是“-126”。
这个时候应该把结果视为无符号数,因为符号已经被“顶”走了。
CODE SEGMENT
ASSUME CS: CODE
BEGIN:
JMP INSTALL
INSTALL:
MOV AX, CS
MOV DS, AX
MOV AH, 22H
MOV BH, 0A0H
SUB AH, BH
MOV AH, 4CH
INT 21H
CODE ENDS
END
在执行“SUB AH, BH”之后,请对比标志位,你会发现有溢出标志和进位标志,说明结果是溢出的。
结果“82H”就是130,一点儿都没有错的,要是你硬要将其视为有符号数,那么它表示的就是“-126”。
这个时候应该把结果视为无符号数,因为符号已经被“顶”走了。
作者: XSFGaoVictor 发布时间: 2011-06-15
溢出与进位是不同概念。所谓溢出,是指有符号数的运算结果超出的可表示的范围,指令执行后得到的结果是错误的。如果结果在可表示范围内,即结果正确时,是没有溢出的。
作者: cnzdgs 发布时间: 2011-06-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28