|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
看了许久许久,网上查了很多人的回答,仍是不懂,学习快进行不下去了,烦请大神帮忙指点一下。
写出下面每条指令执行后,OF、SF等标志位(检测点11.2中其他标志位都能理解,就这个OF位不能理解)的值
第一组:
mov al,10H
mov al,80H ;因为判定OF值,所以进行的是有符号位计算,10H(1 0000B)按位取反加1为(1 0000B)为十进制-16,同理80H为十进制-0(1000 0000B),-16-0=-16,在-128~127范围,
因此未溢出,OF值为0;1 0000B+1000 0000B=1001 0000B,最高位是1,因此SF的值为1
第二组:
mov al,80H
add al,80H ;因为判定OF值,所以进行的是有符号位计算,80H按位取反加1,为十进制-0(1000 0000B),-0-0=0,在在-128~127范围,因此未溢出,OF值为0;1000 0000B + 1000 0000B=1
0000 0000B , 最高位是0,因此SF的值为0。(可答案中OF却是1)
第三组:
mov al,0FCH
add al,05H ;因为判定OF值,所以进行的是有符号位计算,0FCH按位取反加1后为(0000 0001B),十进制为-1,05H按位取反加1后为(1111 1011B)-123D,-1-123=-124,在范围,因此OF为0
第四组:
mov al,7DH
add al,0BH
烦请大神详细指点一下我OF值判定方法是否正确,若不正确,请详解示例
OF(Overflow Flag)溢出标志,在运行过程中,如操作数超出了机器能表示的范围则称为溢出,此时OF位置1,否则置0.
所以是否溢出就要看是否超过了原加法表示的范围,即对于正数来说超过正数的运算范围就是溢出,反之亦然,
对于加减混合运算超出范围也叫溢出,不要想的太复杂,就平常简单理解
|
|