汇编8086中的OF溢出标志怎么判断?它的准确定义是什么?

0我不是天使02022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
爆米花啊 共回答了19个问题 | 采纳率89.5%
溢出标志OF(Overflow Flag)
溢出标志OF用于反映有符号数加减运算所得结果是否溢出.如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0.
of是溢出标志位,SF是符号标志位.
-----------------------------------------------------------------------------------
1.如果OF为零,说明没有溢出,那么逻辑上真正的结果的正负等于实际结果的正负.
如果SF为1,那么实际结果为负,所以逻辑上真正的结果为负.
-45-5=-50
2.如果OF为1,说明有溢出,那么逻辑上真正的结果的正负不等于实际结果的正负.
如果SF为0,那么实际结果为正,由前面“逻辑上真正的结果的正负不等于实际结果的正负”可知,逻辑上真正的结果应该为负.
可得出结论:如果因为溢出导致了实际结果为正,那么逻辑上真正的结果必然为负.
十进制 十六进制
-45-100=-145
mov al,-45 mov al,D3
add al,-100 add al,9C
al的值应为-145, al的值为 6f(111) ,二进制表示为01101111,
8位二进制能表达的数据范围-128至127,of=1 因此,sf=0,因为溢出导致了实际结果为正,
3.如果OF为1,说明有溢出,那么逻辑上真正的结果的正负不等于实际结果的正负.
如果SF为1,那么实际结果为负,由前面“逻辑上真正的结果的正负不等于实际结果的正负”可知,逻辑上真正的结果应该为正.
可得出结论:如果因为溢出导致了实际结果为负,那么逻辑上真正的结果必然为正.
十进制 十六进制
45+100=145
mov al,45 mov al,2d
add al,100 add al,64
al的值应为145, al的值为 91h ,二进制表示为1001 0001,
8位二进制能表达的数据范围-128至127,of=1 因此,sf=1因为溢出导致了实际结果为负
0110 1111(111的补码)
1001 0000(取反了)
1001 0001(加1了,得到-110的补码)即91h
4.如果OF为0,说明没有溢出,那么逻辑上真正的结果的正负等于实际结果的正负.
如果SF为0,实际结果正,所以逻辑上真正的结果正.
1年前

相关推荐