CMP指令
指令格式
CMP R/M,RM/IMM
該指令是比較兩個操作數(shù),實際上,它相當(dāng)于SUB指令。但是相減的結(jié)構(gòu)并不保存到第一個操作數(shù)中。只是根據(jù)相減的結(jié)果改變零標(biāo)志位的,當(dāng)兩個操作數(shù)相等的時候,零標(biāo)志位置1.
MOV EAX,100
MOV ECX,100
CMP EAX, ECX 觀察Z位(零標(biāo)志ZF(Zero Flag):零標(biāo)志ZF用來反映計算結(jié)果是否位0 ,如果運算結(jié)果位0,在判斷結(jié)果是否為0時,可使用此標(biāo)志位。)
MOV EAX,100
MOV ECX,100
CMP EAX,ECX 觀察S位(符號標(biāo)志位SF用來反映運算結(jié)構(gòu)的符號位,他與運算結(jié)果的最高位相同。)
CMP AX,WORD PTR DS:[XXXXX]
CMP AL,BYTE PTR DS:[XXXXX]
TEST指令:
指令格式
TEST R/M,R/M/IMM
該指令在一定程序上和CMP指令時類似的。兩個數(shù)值進行與操作,結(jié)果不保存。但是會改變相應(yīng)標(biāo)志位與的操作
1 and 1 = 1
1 and 0 = 0
0 and 1 = 0
0 and 0 = 0
常見用法:用這個指令,可以確定某寄存器是否等于0
TEST EAX,EAX 觀察Z位
但是如果EAX的二進制某些為1的話,那么運算結(jié)果就不為0