1
我在組件emu8086模擬器下列行:ROR接通溢出標誌
mov al,00100000b
ror al,8
當al
等於0000 0001
兩個標誌攜帶&溢出截止, 但當al
等於1000 0000
這兩個標誌打開。
進位標誌沒問題 - 最後一位數1
在標誌中,但爲什麼這個操作也打開了溢出標誌呢?
感謝您的幫助!
我在組件emu8086模擬器下列行:ROR接通溢出標誌
mov al,00100000b
ror al,8
當al
等於0000 0001
兩個標誌攜帶&溢出截止, 但當al
等於1000 0000
這兩個標誌打開。
進位標誌沒問題 - 最後一位數1
在標誌中,但爲什麼這個操作也打開了溢出標誌呢?
感謝您的幫助!
OF標誌僅被定義爲1位旋轉;它在所有其他情況下都是未定義的(僅RCL和RCR指令 除外:零位旋轉不起作用,即不影響標誌)。對於左旋轉,OF標誌被設置爲CF位(旋轉後)和結果的最高有效位的異或OR 。對於右旋轉,OF標誌被設置爲結果的兩個最高有效位的異或運算結果。
不完全知道爲什麼ROR
有這種行爲,也許這個功能可能被用來計算奇偶校驗位。
此行爲的原因是因爲OF標誌旨在指示剛執行的操作是否導致2的補碼負數變爲正數,反之亦然。因此,例如,如果進位標誌和結果中的最高位不匹配(這意味着數字爲正值,現在爲負值,反之亦然),則會出現溢出條件。這也解釋了爲什麼它只定義爲1位旋轉。 – lurker
非常符合@luker非常好,清楚的解釋:-) – Josef