很多人觉得汇编语言像是天书,其实它就是CPU能直接听懂的“方言”。在调试程序、优化性能甚至分析病毒时,懂一点汇编指令会省不少事。而一张清晰的“汇编指令对照表”,就像一本小型词典,能帮你快速查到某个指令的作用。
为什么需要汇编指令对照表?
比如你在用调试工具看到一行 mov eax, 5,不知道什么意思就卡住了。但如果你手头有一张对照表,就能立刻查到 mov 是“传送”指令,相当于把 5 放进寄存器 eax 中,类似高级语言里的赋值操作。
常见的指令缩写大多有规律可循:
mov — move(移动)
add — 加法
sub — 减法
jmp — 跳转
cmp — 比较
常见指令对照示例
下面是一些x86架构下常用的汇编指令及其功能说明:
mov <dest>, <src> ; 将源操作数复制到目标位置
add eax, ebx ; eax = eax + ebx
sub ecx, 10 ; ecx = ecx - 10
cmp eax, ebx ; 比较 eax 和 ebx 的值
jz label ; 如果上一步结果为零,则跳转到 label
push eax ; 将 eax 值压入栈
pop edx ; 从栈顶弹出一个值放到 edx 中
这些指令看起来简单,但在实际程序中组合起来可以完成复杂逻辑。比如一个简单的循环,在汇编里可能靠 sub 和 jz 配合实现。
不同平台指令有差异
注意,Intel x86 和 ARM 架构的指令写法不一样。比如ARM中常用 LDR 和 STR 来加载和存储数据:
LDR R0, [R1] ; 将 R1 指向地址的数据加载到 R0
STR R0, [R2] ; 把 R0 的值存到 R2 指向的地址
所以查对照表时得先搞清楚目标平台。你在手机逆向分析时看到的指令,大概率是ARM系的,和PC上的x86不一样。
怎么用好这张表?
建议把常用指令打印出来贴在显示器边,或者保存成手机备忘录。遇到不认识的指令随手一查,时间久了自然就记住了。别指望一次背下来,就像学外语,用得多自然就熟了。
有些开发工具也会内置指令提示,比如用IDA反汇编时鼠标悬停就能看到解释。但离线对照表在没网络或环境受限时特别管用。
真正理解汇编,不是死记硬背每条指令,而是通过对照表建立起“机器视角”——知道程序运行时CPU到底在干什么。这对排查崩溃、理解加密逻辑都很有帮助。