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

写汇编之前,先拆解 8086 CPU 内部结构。AX/BX/CX/DX 四大通用寄存器有什么用?CS/DS/SS/ES 段寄存器如何配合寻址?总线是如何连接 CPU 和内存的?一文理清底层硬件逻辑。

2

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 内存?

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

1
物理地址 = 段地址 × 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 从零配置》

广告
广告位预留中 (728x90)