指令 |
含义 |
mov |
将右操作数复制到左操作数 |
lea |
装入有效地址。用来得到局部变量和函数参数的指针 |
push |
将操作数压到堆栈的栈顶 |
pop |
将堆栈的栈顶数弹出到操作数中 |
pushad |
将所有通用寄存器压到堆栈的栈顶 |
popad |
将堆栈的栈顶数弹出到所有的通用寄存器中 |
call |
调用一个函数。以寄存器和偏移量来调用函数和c++里的虚函数调用很类似 |
ret |
从一个函数返回。_stdcall调用规范要求如果有返回值,就要将返回值从堆栈的栈顶弹出 |
leave |
是move ESP、EBP/pop EBP的简写,用来退出函数 |
add |
算数加 |
sub |
算数减 |
inc |
递增操作 |
dec |
递减操作 |
mul |
无符号整数乘法。操作数必须是寄存器或内存单元 |
imul |
有符号整数乘法。 |
div |
无符号整数除法。操作数必须是寄存器或内存单元 |
idiv |
有符号整数除法。操作数必须是寄存器或内存单元 |
and |
逻辑与 |
or |
逻辑或 |
not |
逻辑非,使用反码非。与将所有的位单独取反效果相同 |
neg |
非操作,使用补码(正的补码同原码,负的补码除符号位外取反加一)非。与乘以-1效果相同 |
xor |
异或。一个寄存器和它自身进行异或通常被用来将该寄存器置为0 |
cmp |
比较操作数(使用减法),并置上标志寄存器的相应位。操作数不会被修改 |
test |
比较操作数的位(使用逻辑与),并置上标志寄存器的相应位,操作数不会被修改 |
jmp |
无条件跳转 |
je |
如果相等则跳转 |
jne |
如果不等则跳转 |
loop |
返回到循环的入口,视具体条件而定 |
nop |
空操作,用来填充 |
int |
引发中断,3号中断调用调试器,它经常被当作不会被调用的指令填充到程序中,从而成为一个特殊的空操作 |