汇编指令速查表
本表以 x86-64 Intel 语法为主。
数据传送
| 指令 |
含义 |
示例 |
mov |
复制数据 |
mov rax, rbx |
lea |
计算有效地址 |
lea rax, [rbx+8] |
push |
入栈 |
push rbp |
pop |
出栈 |
pop rbp |
xchg |
交换 |
xchg eax, ebx |
movzx |
零扩展复制 |
movzx eax, byte ptr [rdi] |
movsx |
符号扩展复制 |
movsx eax, byte ptr [rdi] |
算术指令
| 指令 |
含义 |
add |
加法 |
sub |
减法 |
inc |
加 1 |
dec |
减 1 |
neg |
取负 |
imul |
有符号乘法 |
mul |
无符号乘法 |
idiv |
有符号除法 |
div |
无符号除法 |
逻辑与位运算
| 指令 |
含义 |
and |
按位与 |
or |
按位或 |
xor |
按位异或 |
not |
按位取反 |
shl / sal |
左移 |
shr |
逻辑右移 |
sar |
算术右移 |
rol |
循环左移 |
ror |
循环右移 |
比较与测试
| 指令 |
含义 |
cmp |
比较,设置标志位 |
test |
按位与测试,设置标志位 |
跳转指令
| 指令 |
含义 |
jmp |
无条件跳转 |
je / jz |
相等或零 |
jne / jnz |
不相等或非零 |
jg / jnle |
有符号大于 |
jge / jnl |
有符号大于等于 |
jl / jnge |
有符号小于 |
jle / jng |
有符号小于等于 |
ja / jnbe |
无符号大于 |
jae / jnb |
无符号大于等于 |
jb / jnae |
无符号小于 |
jbe / jna |
无符号小于等于 |
函数调用
| 指令 |
含义 |
call |
调用函数 |
ret |
函数返回 |
leave |
恢复栈帧 |
字符串和批量操作
| 指令 |
含义 |
movsb |
移动字节 |
stosb |
存储字节 |
cmpsb |
比较字节 |
scasb |
扫描字节 |
rep |
重复执行 |
常见标志位
| 标志 |
含义 |
ZF |
零标志 |
CF |
进位标志 |
SF |
符号标志 |
OF |
溢出标志 |
PF |
奇偶标志 |
系统调用
Linux x86-64 系统调用参数寄存器:
rax = syscall number
rdi = arg1
rsi = arg2
rdx = arg3
r10 = arg4
r8 = arg5
r9 = arg6