2011-12-13 74 views
13

我有下面的代碼:大會 - 進位標誌VS溢出標誌

mov al, -5 
add al, 132 
add al, 1 

當我檢查,溢出標誌和進位標誌將在第一工作組,並在第二,只有溢出將設置。

但我不理解爲什麼:

  1. 在無符號數,結果是143(8FH),併爲適合的8位無符號數(大於255小)=>進國旗不應該被設置。在帶符號的數字中,結果是127,它適合於8位有符號數,並且不應該設置溢出。

的哪些錯誤?謝謝。

回答

13

在無符號算術中,您添加了0xFB0x84,即251 + 132,它確實大於8位,因此進位標誌被設置。

在第二種情況下,所添加127至1,這的確超過了符號的8位範圍,所以溢出標誌被設置。當增加了兩個正數的結果是否定的或 添加兩個負數的結果爲正時,

+0

所以溢出時,才設置的時候我「加人,1」?如果我將刪除這一行,溢出不會設置? –

+1

@Tom:溢出將由「add」指令設置。 –

+0

所以你可以解釋我請溢出設置?因爲據我瞭解,在-128到127的範圍內不會影響溢出。 –

21

溢出。 例如: +127+1=?

+127=0111 1111 
    +1=0000 0001 
    --------- 
    1000 0000 

當我們看兩個操作數和 結果符號位的符號位,我們發現,發生溢出,答案是不正確。