汇编OF溢出位的解释!溢出条件是什么?到底是怎么造成溢出的?


首先给一段说明:

OF(Overflow Flag)溢出位:当运算的结果超过字长所能表示的范围时,产生“溢出”。此时,OF置1记为OV(Overflow)。否则,OF清0,记为NV(Non Overflow),溢出产生的原因是由于同号数相加或异号数相减。

 

第一:

比如你当前的运算的1+1, 那么正确的结果应该是2,但是你的命令1+1=-1.那么就溢出了,这就是同号数相加溢出、

异号数相加的溢出是指:-1-2 ,正确的结果应该是:-3,但是你的命令却是:-1-2=3,那么依旧是溢出

 

第二:

二进制中所能表达的范围为:-128——127

如果运算结果超出这个值也算溢出,不管有符号没有符号!

如:

无符号数:F0H(240) + 78H(120) = 168H(360)
      有符号数:F0H(-16) + 78H(120) = 68H(104)

       360超出了8位数所能表示的范围-128~127
       104没有超出8位数所能表示的范围,因此有符号数运算时,没有溢出

       再如:
       无符号数:F0H(240) + 88H(136) = 178H(376)
       有符号数:F0H(-16) + 88H(-120) = 78H(-136)

       376超出了8位数所能表示的范围
       -136也超出了8位书所能表示的范围,因此有符号数与无符号数元算时,都产生溢出

 

第三:

法则:

1.当两个符号相同的数相加,结果的符号与之相反,则OF=1,否则OF=0.
      2.当两个符号不同的数相减,结果的符号与减数相同,则OF=1,否则OF=0.

 

如果是俩个符号相同的值相减。 里面没有标注出来,那么则表示永远不会溢出。

如果俩个符号位都是正的相加,结果为符号位为负,那么则超出!

如果俩个符号位不同,结果的符号位与减数相同,则超出!

如果俩个符号位不同的相加,则永远不会溢出,

 

关于符号位 正负的判断,请见我的下一篇博客!

希望这点浅薄的理解能对你有用处

本文章转载自五度博客:http://blog.jsx8.com


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM