8086 CPU 结构考前梳理:BIU/EU、寄存器与物理地址计算

举报
yd_239417839 发表于 2026/11/05 23:17:30 2026/11/05
【摘要】 微机原理这门课的计算题和概念题,一大半落在 8086 的内部结构上。把 BIU/EU 的分工、寄存器的分组与惯用法、标志位的置位条件、物理地址计算这几块吃透,卷面上大部分题目就有底了。这篇按考点顺序把 8086 的结构过一遍,最后附一份易错点清单。一、BIU 与 EU:取指和执行为什么能重叠8086 内部分成两个独立工作的部件:BIU(总线接口部件):负责所有总线操作——取指令、读写内存和端...

微机原理这门课的计算题和概念题,一大半落在 8086 的内部结构上。把 BIU/EU 的分工、寄存器的分组与惯用法、标志位的置位条件、物理地址计算这几块吃透,卷面上大部分题目就有底了。这篇按考点顺序把 8086 的结构过一遍,最后附一份易错点清单。

一、BIU 与 EU:取指和执行为什么能重叠

8086 内部分成两个独立工作的部件:

  • BIU(总线接口部件):负责所有总线操作——取指令、读写内存和端口。它管理 4 个段寄存器、指令指针 IP、地址加法器(负责把段基址和偏移合成 20 位物理地址)和 6 字节的指令队列。
  • EU(执行部件):负责译码和执行指令,包含通用寄存器、ALU 和标志寄存器。

EU 执行一条指令的同时,BIU 可以继续取下一条指令往队列里填,这就是 8086 上“取指与执行重叠”的流水线雏形。两个常考细节:

  1. 指令队列 6 字节;一旦执行转移类指令(JMP/CALL/INT/RET 等),队列里预取的内容全部作废,重新填装。
  2. EU 需要访问内存时,BIU 会先完成手头正在进行的取指周期,再响应 EU 的访存请求。

二、寄存器分组与惯用法

分类 寄存器 说明 常见用途
通用数据 AX、BX、CX、DX 各自可拆成 H/L 两个 8 位(AH/AL…) AX 是累加器,乘除指令默认操作数
指针 SP、BP SP 永远指向栈顶 BP 默认段为 SS,用来访问栈帧
变址 SI、DI 串操作源/目的变址 SI 配 DS,DI 在串操作里配 ES
段寄存器 CS、DS、SS、ES 代码/数据/栈/附加段 只能赋值不能参与运算
控制 IP、FLAGS 指令指针、标志位 IP 不可直接 MOV 赋值

几个绑定关系要记死:LOOP 的计数器默认 CX;DIV 的被除数默认 AX(16 位)或 DX:AX(32 位),商在 AL/AX,余数在 AH/DX;串操作源地址 DS:SI、目的地址 ES:DI。

三、标志位:6 个状态位 + 3 个控制位

状态位记录运算结果的特征:

  • CF 进位:无符号数运算最高位有进位/借位。8 位加法 0FFH + 01H → CF=1
  • PF 奇偶:结果低 8 位中 1 的个数为偶数 → PF=1
  • AF 辅助进位:低 4 位向高 4 位进位(BCD 调整指令用)
  • ZF 零:结果为 0 → ZF=1
  • SF 符号:最高位为 1 → SF=1
  • OF 溢出:有符号数运算结果超出表示范围。8 位加法 7FH + 01H → OF=1 而 CF=0

控制位由指令设置:

  • TF 陷阱:TF=1 时单步执行,每条指令产生一次类型 1 中断(调试用)
  • IF 中断允许:IF=1 才响应可屏蔽中断 INTR;STI 置 1、CLI 清 0
  • DF 方向:串操作步进方向;STD 递减、CLD 递增

最容易混的是 CF 和 OF:CF 管无符号、OF 管有符号,同一次加法两者可能同时为 1,也可能只有一个为 1。判断方法是把操作数分别按无符号、有符号两种解释各判一次。

四、物理地址 = 段基址 × 16 + 偏移

8086 地址线 20 根,寻址空间 1MB(00000H–FFFFFH),但寄存器只有 16 位,于是用“段:偏移”两个 16 位数合成 20 位物理地址:

物理地址 = 段寄存器 × 10H + 偏移   (等价于段基址二进制左移 4 位再加偏移)

例:CS = 1234H,IP = 5678H
物理地址 = 12340H + 5678H = 179B8H

由此推出几条常考结论:

  1. 每段最大 64KB(偏移 16 位);
  2. 段起始地址必须能被 16 整除(段基址低 4 位为 0),这样的地址叫小节边界,1MB 空间共有 64K 个小节;
  3. 段与段可以重叠;同一个物理地址可以对应无数个“段:偏移”组合,如 1000H:0000H 与 0F00H:1000H 都指向 10000H;
  4. 默认搭配:取指令用 CS:IP,栈操作用 SS:SP,串操作目的用 ES:DI。

五、易错点清单

  1. SP 指向栈顶,BP 默认段是 SS;栈向低地址生长:PUSH 先 SP−2 再存数,POP 先取数再 SP+2。
  2. CX 只有在 LOOP 和串操作重复前缀里才被硬件当计数器,其余场合就是普通寄存器。
  3. MOV IP, xxx 是非法的——改 IP 只能靠 JMP/CALL/RET/中断返回这类控制转移指令。
  4. “段基址能被 16 整除”说的是段起始地址对齐小节,不是物理地址本身;物理地址可以是任意值。
  5. 8086 数据总线 16 根、地址总线 20 根,“16 位机”指的是一次能处理 16 位数据,别跟地址线根数混起来。
  6. 乘法 MUL 的结果是双倍长度:8 位×8 位放 AX,16 位×16 位放 DX:AX(高位在 DX)。
  7. 转移指令清空指令队列——队列作废条件是执行转移类指令,不是“队列满了”。
  8. 最小/最大模式由 MN/MX̄ 引脚电平决定:最小模式单处理器、由 CPU 自己产生控制信号;最大模式接 8288 总线控制器,支持多处理器。

写在最后

复习优先级建议:物理地址计算和小节边界这类计算题拿分最快,先练熟;概念题盯住 BIU/EU 分工、队列行为和标志位对比;寄存器表最好自己默写两遍。祝考试顺利。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。