2015-06-29 64 views
1

我在組件emu8086模擬器下列行:ROR接通溢出標誌

mov al,00100000b 
ror al,8 

al等於0000 0001兩個標誌攜帶&溢出截止, 但當al等於1000 0000這兩個標誌打開。

進位標誌沒問題 - 最後一位數1在標誌中,但爲什麼這個操作也打開了溢出標誌呢?

感謝您的幫助!

回答

3

Intel manual Vol 2B

OF標誌僅被定義爲1位旋轉;它在所有其他情況下都是未定義的(僅RCL和RCR指令 除外:零位旋轉不起作用,即不影響標誌)。對於左旋轉,OF標誌被設置爲CF位(旋轉後)和結果的最高有效位的異或OR 。對於右旋轉,OF標誌被設置爲結果的兩個最高有效位的異或運算結果。

不完全知道爲什麼ROR有這種行爲,也許這個功能可能被用來計算奇偶校驗位。

+7

此行爲的原因是因爲OF標誌旨在指示剛執行的操作是否導致2的補碼負數變爲正數,反之亦然。因此,例如,如果進位標誌和結果中的最高位不匹配(這意味着數字爲正值,現在爲負值,反之亦然),則會出現溢出條件。這也解釋了爲什麼它只定義爲1位旋轉。 – lurker

+0

非常符合@luker非常好,清楚的解釋:-) – Josef