8086 指令分类
8086 有一百多条指令,但常用的只有 30 多条。我们将它们分为三大类:
一、数据传送指令
| 指令 | 功能 | 示例 |
|---|---|---|
| MOV | 复制数据 | MOV AX, BX |
| XCHG | 交换数据 | XCHG AL, BL |
| PUSH/POP | 压栈/出栈 | PUSH AX |
| LEA | 加载有效地址 | LEA BX, VAR |
注意事项:
MOV不能在两个内存单元之间直接传送- 段寄存器不能直接接收立即数
PUSH/POP操作单位是字(16 位)
二、算术运算指令
| 指令 | 功能 | 影响标志位 | 示例 |
|---|---|---|---|
| ADD | 加法 | CF, ZF, SF, OF | ADD AX, 5 |
| SUB | 减法 | CF, ZF, SF, OF | SUB BX, CX |
| MUL | 无符号乘法 | CF, OF | MUL BL |
| DIV | 无符号除法 | 异常 | DIV CX |
乘除法细节:
MUL BL:AL × BL → AXDIV CX:DX:AX ÷ CX → AX(商) DX(余数)
三、逻辑运算指令
| 指令 | 功能 | 示例 | 应用场景 |
|---|---|---|---|
| AND | 按位与 | AND AL, 0Fh |
清零高 4 位 |
| OR | 按位或 | OR AH, 80h |
设置最高位 |
| XOR | 按位异或 | XOR AX, AX |
快速清零 |
| NOT | 按位取反 | NOT AL |
求反码 |
| SHL/SHR | 逻辑移位 | SHL AL, 1 |
×2 或 ÷2 |
实战:用 XOR 清零
|
|
这是汇编优化中的经典技巧,也是现代编译器常用的优化手段。
总结
掌握这 30 条指令,你就能写出 80% 的汇编程序。剩下的指令多在特定场景下使用。
下一篇:《寻址方式终极指南:7 种寻址模式与性能分析》