(7)比較運算指令學習
在程序中,咱們要時常根據某個變量或表達式的取值去執行不一樣指令,從而使程序表現出有不一樣的功能。爲了配合這樣的操做,在CPU的指令系統中提供了各類不一樣的比較指令。經過這些比較指令的執行來改變有關標誌位,爲進行條件轉移提供依據。字符串
1、比較指令CMP(Compare Instruction)io
指令的格式:CMP Reg/Mem, Reg/Mem/Imm變量
受影響的標誌位:AF、CF、OF、PF、SF和ZF程序
指令的功能:用第二個操做數去減第一個操做數,並根據所得的差設置有關標誌位,爲隨後的條件轉移指令提供條件。但並不保存該差,因此,不會改變指令中的操做數。數據
2、比較交換指令(Compare And Exchange Instruction)字符
在數據傳送類指令中,咱們介紹了交換指令XCHG,它無論二個操做數的值是什麼,都無條件地進行交換。而比較交換指令,是先進行比較,再根據比較的結果決定是否進行操做數的交換操做。struct
比較交換指令的功能:當二個操做數相等時,置標誌位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的值不變
三、字符串比較指令(Compare String Instruction)
後面學習中介紹