微型计算机系统结构速览:寄存器、总线与内存

CPU 的内部视角

汇编语言的操作对象不是变量,而是寄存器内存地址。理解 8086 的内部结构,是写好汇编的前提。

8086 的四大通用寄存器

| 寄存器 | 全称 | 主要用途 | 拆分为高/低 8 位 |

|:--|:--|:--|:--|

| AX | Accumulator | 算术运算、I/O 操作、中断调用 | AH / AL |

| BX | Base | 基址寻址、内存指针 | BH / BL |

| CX | Count | 循环计数器、位移量 | CH / CL |

| DX | Data | I/O 端口地址、乘除法高位 | DH / DL |

为什么要拆分?

因为 8086 支持 8 位和 16 位操作。你可以单独操作 AL 而不影响 AH,这在处理 ASCII 字符时非常高效。

段寄存器:分段内存模型

8086 只有 20 位地址总线,但内部寄存器只有 16 位(最大 64KB)。如何访问 1MB 内存?

答案是段寄存器 + 偏移地址


物理地址 = 段地址 × 16 + 偏移地址

| 段寄存器 | 用途 |

|:--|:--|

| CS | 代码段(Code Segment)|

| DS | 数据段(Data Segment)|

| SS | 堆栈段(Stack Segment)|

| ES | 附加段(Extra Segment)|

标志寄存器 FLAGS

CPU 执行每条指令后,会更新 FLAGS 中的状态位:

  • **ZF (Zero Flag)**:结果为 0 则置 1
  • **CF (Carry Flag)**:进位/借位标志
  • **SF (Sign Flag)**:符号标志(最高位)
  • **OF (Overflow Flag)**:溢出标志
  • 这些标志位决定了 JE(等于则跳转)、JNE(不等于则跳转)等条件跳转指令的走向。

    总线系统

    CPU 通过总线与外部通信:

    1. 地址总线(20 位):决定能访问多少内存(1MB)

    2. 数据总线(16 位):决定一次能读写多少数据(2 字节)

    3. 控制总线:读写信号、中断请求、时钟同步

    总结

    8086 的架构虽然古老,但现代 x86_64 依然保留了这些核心概念(寄存器、段、标志位)。理解了 8086,再看现代 CPU 就会觉得"万变不离其宗"。

    下一篇:《汇编语言环境搭建:MASM/TASM/DOSBox 从零配置》


    原文链接:https://wenyiblog.top/2026/06/asm-02-computer-architecture/

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

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