匯編語言--微機CPU的指令系統(五)(比較運算指令)
(7)比較運算指令
在程序中,我們要時常根據某個變量或表達式的取值去執行不同指令,從而使程序表現出有不同的功能。為了配合這樣的操作,在CPU的指令系統中提供了各種不同的比較指令。通過這些比較指令的執行來改變有關標誌位,為進行條件轉移提供依據。
1、比較指令CMP(Compare Instruction)
指令的格式:CMP Reg/Mem, Reg/Mem/Imm
受影響的標誌位:AF、CF、OF、PF、SF和ZF
指令的功能:用第二個操作數去減第一個操作數,並根據所得的差設置有關標誌位,為隨後的條件轉移指令提供條件。但並不保存該差,所以,不會改變指令中的操作數。
2、比較交換指令(Compare And Exchange Instruction)
在數據傳送類指令中,我們介紹了交換指令XCHG,它不管二個操作數的值是什麽,都無條件地進行交換。而比較交換指令,是先進行比較,再根據比較的結果決定是否進行操作數的交換操作。
比較交換指令的功能:當二個操作數相等時,置標誌位ZF為1;否則,把第一操作數的值賦給第二操作數,並置標誌位ZF為0。
a) 8位/16位/32位比較交換指令
指令的格式:CMPXCHG Reg/Mem, AL/AX/EAX ;80486+
受影響的標誌位:AF、CF、OF、PF、SF和ZF
b) 64位比較交換指令
該指令只有一個操作數,第二個操作數EDX:EAX是隱含的。
指令的格式:CMPXCHG8B Reg/Mem ;Pentium+
受影響的標誌位:ZF
例如:假設(AX)=1234H,(BX)=1234H,(CX)=4321H。
CMPXCHG BX, AX ;指令執行後,ZF=1
CMPXCHG CX, AX ;指令執行後,ZF=0,(AX)=4321H,CX的值不變
3、字符串比較指令(Compare String Instruction)
後面學習中介紹
匯編語言--微機CPU的指令系統(五)(比較運算指令)