處理器內部以補碼錶示有符號數,8個二進位制位能夠表達的整數範圍是:+127 ~ -128,16位表達的範圍是:+32767 ~ -32768.如果運算結果超出了這個範圍,就是產生了溢位,有溢位,說明有符號數的運算結果不正確 例如: 3AH + 7CH=B6H,就是58 + 124=182,已經超出-128 ~ 127範圍,產生溢位,所以OF = 1;另一方面,補碼B6H表達真值是-74,顯然運算結果也不正確。
處理器內部以補碼錶示有符號數,8個二進位制位能夠表達的整數範圍是:+127 ~ -128,16位表達的範圍是:+32767 ~ -32768.如果運算結果超出了這個範圍,就是產生了溢位,有溢位,說明有符號數的運算結果不正確 例如: 3AH + 7CH=B6H,就是58 + 124=182,已經超出-128 ~ 127範圍,產生溢位,所以OF = 1;另一方面,補碼B6H表達真值是-74,顯然運算結果也不正確。
溢位標誌OF和進位標誌CF是兩個意義不同的標誌.進位標誌表示無符號數運算結果是否超出範圍,運算結果仍然正確;溢位標誌表示有符號數運算結果是否超出範圍,運算結果已經不正確。請看例子 例1:3AH + 7CH=B6H 無符號數運算:58+124=182,範圍內,無進位 有符號數運算: 58+124=182 ,範圍外,有溢位 例2:AAH + 7CH=(1)26H 無符號數運算:170+124=294,範圍外,有進位 有符號數運算:-86+124=28 ,範圍內,無溢位 處理器對兩個運算元進行運算時,按照無符號數求得結果,並相應設定進位標誌CF;同時,根據是否超出有符號數的範圍設定溢位標誌OF。應該利用哪個標誌,則由程式設計師來決定。也就是說,如果將參加運算的運算元認為是無符號數,就應該關心進位;認為是有符號數,則要注意是否溢位。判斷運算結果是否溢位有一個簡單的規則:只有當兩個相同符號數相加,而運算結果的符號與原資料符號相反時,產生溢位;因為,此時的運算結果顯然不正確。其他情況下,則不會產生溢位。