匯編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