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只能递减,所以,循环计数器只能从大到小。在程序中,必须先把循环次数赋给循环计数器。