8086 指令系统全景图:数据传送、算术运算与逻辑操作

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 → AX
  • `DIV 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 清零

    
    XOR AX, AX   ; 比 MOV AX, 0 更快,且只占 2 字节
    

    这是汇编优化中的经典技巧,也是现代编译器常用的优化手段。

    总结

    掌握这 30 条指令,你就能写出 80% 的汇编程序。剩下的指令多在特定场景下使用。

    下一篇:《寻址方式终极指南:7 种寻址模式与性能分析》


    原文链接:https://wenyiblog.top/2026/06/asm-05-instruction-set/

    首发于文艺技术笔记(wenyiblog.top),转载请注明出处。

    posted @ 2026-06-22 19:28  软件工程师文艺  阅读(1)  评论(0)    收藏  举报