1. 程式人生 > >匯編語言--微機CPU的指令系統(五)(比較運算指令)

匯編語言--微機CPU的指令系統(五)(比較運算指令)

hang 介紹 操作數 我們 com 標誌位 表達 數據 進行

(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的指令系統(五)(比較運算指令)