小咒 发表于 2013-8-15 08:44:53

监测点11.2,of标志寄存器的问题

检测点11.2写出下面每条指令执行后,ZF、PF、SF、CF、OF等标志位的值。             al               CF    OF    SF    ZF    PFsub al,al   0h/0000 0000b      0   0   0   1   1mov al,10h    10h/0010 0000b   0   0   0   1   1add al,90h    a0h/1010 0000b   0   0   1   0   1mov al,80h    80h/1000 0000b   0   0   1   0   1add al,80h    0h/0000 0000b      1   1   0   1   1mov al,0fch   0fch/1111 1100b    1   1   0   1   1add al,05h    1h/0000 0001b      1   0   0   0   0mov al,7dh    7dh/1111 1101b   1   0   0   0   0add al,0bh    88h/1000 1000b   0   1   1   0   1
为什么add al,0bh这里的of寄存器是=1呢7d和0b相加应该没有溢出才对啊?



az4121 发表于 2013-8-15 08:55:18

>127.........

小咒 发表于 2013-8-15 12:22:39

az4121 发表于 2013-8-15 08:55 static/image/common/back.gif
>127.........

怎么是127,我还是没明白

OF标志寄存器 到底是如何计算溢出的
mov al,7dh    7dh/0111 1101b
add al,0bh    88h/1000 1000b
这个时候为什么of寄存器会溢出呢
d7=01111101b
0b=00001011b
计算结果al=88H=10001000
d7和0b都是无符号数,为什么结果of会溢出呢

vitamin 发表于 2013-8-15 17:55:47

小咒 发表于 2013-8-15 12:22
怎么是127,我还是没明白

OF标志寄存器 到底是如何计算溢出的


操作数看做有符号数,两个正数相加结果变成负数了,所以溢出了。

281595933 发表于 2013-8-15 18:50:37

    楼主~!这个问题其实是你还没把11章第5节的内容理解。我以前想这个问题想了2天终于想通了,今天就告诉你我的看法吧,是这样的比如说8位的有符号数据,能表示的范围是-128-127,超出这个范围就是溢出了,d7+0b=88h,88h等于十进制的136,136大于127,所以产生了溢出,88h代表了有符号数-120补码.

小咒 发表于 2013-8-17 09:57:36

281595933 发表于 2013-8-15 18:50 static/image/common/back.gif
楼主~!这个问题其实是你还没把11章第5节的内容理解。我以前想这个问题想了2天终于想通了,今天就告诉你 ...

恩,我自己概念混淆了,一直认为最大数是FF,也就是255,没有把-128算进去
正数的最大值是7F,也就是127
页: [1]
查看完整版本: 监测点11.2,of标志寄存器的问题