指令 | 含义 |
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号中断调用调试器,它经常被当作不会被调用的指令填充到程序中,从而成为一个特殊的空操作 |
X86的常用汇编指令
最新推荐文章于 2024-01-21 08:45:00 发布