1、xor eax,eax
常見用法:
0041000 call [0041100]
0041006 je 042000
......
0041100 ...... //call 調用的子函數 start
......
0041120 xor eax,eax
0041122 retn //call end
說明:(1)0041120 xor eax,eax 這句的作用是把eax賦0(使得call函數的返回值爲0),同時把ZF標誌位置1,
所以,0041006 je 042000 這句的跳轉會實現。
(2)如果是or的話,eax的值不變,同時把ZF標誌位置0。
2、test檢測位指令
test是把二個操作數進行邏輯“與”操作,並根據運算結果設置相應的標誌位,但並不保存該運算結果,所以,不會改變指令中的操作數。在該指令後,通常用JE、JNE、JZ和JNZ等條件轉移指令。
指令的格式:TEST Reg/Mem, Reg/Mem/Imm
受影響的標誌位:CF(0)、OF(0)、PF、SF和ZF(AF無定義)
call XXXXXXXX
test al,al/eax,eax...
je/jne...
3、彙編語言中,CX或ECX只能遞減,所以,循環計數器只能從大到小。在程序中,必須先把循環次數賦給循環計數器。