8086 CPU 结构考前梳理:BIU/EU、寄存器与物理地址计算
【摘要】 微机原理这门课的计算题和概念题,一大半落在 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 上“取指与执行重叠”的流水线雏形。两个常考细节:
- 指令队列 6 字节;一旦执行转移类指令(JMP/CALL/INT/RET 等),队列里预取的内容全部作废,重新填装。
- 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
由此推出几条常考结论:
- 每段最大 64KB(偏移 16 位);
- 段起始地址必须能被 16 整除(段基址低 4 位为 0),这样的地址叫小节边界,1MB 空间共有 64K 个小节;
- 段与段可以重叠;同一个物理地址可以对应无数个“段:偏移”组合,如 1000H:0000H 与 0F00H:1000H 都指向 10000H;
- 默认搭配:取指令用 CS:IP,栈操作用 SS:SP,串操作目的用 ES:DI。
五、易错点清单
- SP 指向栈顶,BP 默认段是 SS;栈向低地址生长:PUSH 先 SP−2 再存数,POP 先取数再 SP+2。
- CX 只有在 LOOP 和串操作重复前缀里才被硬件当计数器,其余场合就是普通寄存器。
- MOV IP, xxx 是非法的——改 IP 只能靠 JMP/CALL/RET/中断返回这类控制转移指令。
- “段基址能被 16 整除”说的是段起始地址对齐小节,不是物理地址本身;物理地址可以是任意值。
- 8086 数据总线 16 根、地址总线 20 根,“16 位机”指的是一次能处理 16 位数据,别跟地址线根数混起来。
- 乘法 MUL 的结果是双倍长度:8 位×8 位放 AX,16 位×16 位放 DX:AX(高位在 DX)。
- 转移指令清空指令队列——队列作废条件是执行转移类指令,不是“队列满了”。
- 最小/最大模式由 MN/MX̄ 引脚电平决定:最小模式单处理器、由 CPU 自己产生控制信号;最大模式接 8288 总线控制器,支持多处理器。
写在最后
复习优先级建议:物理地址计算和小节边界这类计算题拿分最快,先练熟;概念题盯住 BIU/EU 分工、队列行为和标志位对比;寄存器表最好自己默写两遍。祝考试顺利。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)