destiny 发表于 2012-10-27 01:35:19

OF标志位溢出的迷惑,求大牛详细解释!

                                                   ZF    OF   SF   ZF   PF

sub al,al         0h/0000 0000b       0   0       0       1       1

mov al,10h    10h/0010 0000b   0   0       0       1       1

add al,90h      a0h/1010 0000b   0   0       1       0       1   
      
有符号数执行正常结果 A0 =为有符号数160   
al=10h=有符号数-240的补码         
90H=为有符号数-112的补码   
[-240] + [-112] = [-352]   
为什么没有溢出 这里很迷茫啊

mov al, 0f0H   ;f0H,为有符号数-16的补码
add al, 088H   ;088H为有符号数-120的补码


补充内容 (2012-10-27 01:38):
add运行后结果为78H   这个代码明显溢出正常结果应该是178H 它对应的有符号数是-136

补充内容 (2012-10-27 01:40):
而上面那2个代码 结果为A0    正常结果也是A0 A0对应的有符号数是96怎么算都不会跟-352有联系啊郁闷就郁闷在这里了

补充内容 (2012-10-27 01:41):
A0是有符号数96的补码上面打错了

补充内容 (2012-10-27 01:45):
更为有趣的是我在计算-352的补码 转换2进制然后取反加1的结果是A0 ,但是A0转换成2进制取反加1后的结果是-96

huise865 发表于 2012-10-27 01:35:20

90H+10H 对于无符号数的情况下结果为100H,
因为 al是八位的,
无法存放 所以产生进位,此时CF=1,
100H的补码是多少?是0,0是在-128~127之间,所以没有溢出,OF=0

(90H+10H=100H,al能存放吗?如果按照楼主的算法,你看看AL能不能存放-352的原码、可是奇怪的是能,哈哈、自己去理解下... ...)

destiny 发表于 2012-10-27 01:44:53

更为有趣的是我在计算-352的补码 转换2进制然后取反加1的结果是A0 ,但是A0转换成2进制取反加1后的结果是-96

仰望天上的光 发表于 2012-10-27 08:22:52

al=10h为有符号数的时候是正数32,不是-240

destiny 发表于 2012-10-27 13:47:15

仰望天上的光 发表于 2012-10-27 08:22 static/image/common/back.gif
al=10h为有符号数的时候是正数32,不是-240

al=10H 有符号数32 请问您是怎么计算出来的!

歼十四 发表于 2012-11-4 22:41:24

学到这里我也很困惑,请敬爱的甲鱼解答下嘛!

makelive 发表于 2016-9-16 10:40:18

mov al,10h    10h/0010 0000b   0   0       0       1       1
这里10h的二进制0010 0000b是错的,应该是0001 0000b
页: [1]
查看完整版本: OF标志位溢出的迷惑,求大牛详细解释!