CMPXCHG

CMPXCHG-比較並交換

說明
比較AL、AX或EAX
暫存器中的值(具體取決於操作數的大小)與第一個運算元(目標運算元)。如果兩個值相等,則將第二個運算元(源運算元)載入到目標運算元。否則,將目標運算元載入到
AL、AX或EAX暫存器。
此指令可以配合LOCK
前綴使用,此時指令將以原子方式執行。為了簡化處理器的匯流排接口,目標運算元可以不考慮比較結果而接收一個寫入周期。如果比較失敗,則寫回目標運算元;否則,將源運算元寫入目標。(處理器永遠不會只產生鎖定讀取而不產生鎖定寫入)。

影響的標誌
如果目標運算元中的值與暫存器AL、AX或EAX中的相等,則設定ZF標誌;否則,清除此標誌。CF、PF、AF、SF及OF
標誌根據比較操作的結果設定。
保護模式異常
#GP(0)-如果目標位於不可寫的段。如果記憶體運算元有效地址超出CS、DS、ES、FS或GS段限制。如果DS、ES、FS或GS
暫存器包含空的段選擇器。
#SS(0)-如果記憶體運算元有效地址超出SS段限制。
#PF(錯誤代碼)-如果發生頁錯誤
#AC(0)-如果在當前特權級別為3且啟用對齊檢查的情況下進行未對齊的記憶體引用。
實地址模式異常
#GP-如果記憶體運算元有效地址超出CS、DS、ES、FS或GS段限制。
#SS-如果記憶體運算元有效地址超出SS段限制。
虛8086模式異常
#GP(0)-如果記憶體運算元有效地址超出CS、DS、ES、FS或GS段限制。
#SS(0)-如果記憶體運算元有效地址超出SS段限制。
#PF(錯誤代碼)-如果發生頁錯誤。
#AC(0)-如果在啟用對齊檢查的情況下進行未對齊的記憶體引用。

相關詞條

相關搜尋

熱門詞條

聯絡我們