Files
Operating-System/8086/Exam/第2章 16位Intel 8086微处理器.md
2026-06-29 21:12:21 +08:00

23 KiB
Raw Permalink Blame History

第 2 章 16 位 Intel 8086 微处理器(期末复习总结)

本章是《微机系统》课程的绝对核心,期末考试必考、计算题与简答题的主要来源。请务必熟练掌握物理地址计算、标志位、最小/最大模式、寄存器组、引脚信号、总线时序等内容。


一、详细内容分析

2.0 8086 概述PPT 第 1 页)

  • 厂商Intel 公司推出的 16 位微处理器。
  • 兼容性:兼容 80858 位微处理器8088 是与 8086 内部结构相同的微处理器,但外部数据总线为 8 位。
  • 结构:CISC(复杂指令集)结构。
  • 供电:单一 +5V 电源。
  • 主频:4.77 MHz ~ 10 MHz
  • 总线:
    • 内部数据总线和外部数据总线均为 16 位8088 为 8 位)
    • 地址总线为 20 位,可最大寻址 1 MB 的存储空间。
  • 工作方式:取指令与执行指令并行(流水线/重叠工作)。
  • 内存管理:分段管理方式。

2.1 8086 微处理器内部结构

2.1.0 内部基本组成

CPU 内部最基本的 4 个组成:

  1. 运算器ALU
  2. 控制器
  3. 寄存器组
  4. 总线逻辑

2.1.1 总线接口单元 BIUBus Interface Unit

组成5 个部分):

  1. 4 个 16 位段寄存器CS、DS、SS、ES
  2. 16 位指令指针 IP
  3. 6 字节指令队列8086
  4. 总线控制逻辑
  5. 20 位地址加法器(Σ)

功能

  1. 取指令(从存储器取指令到指令队列)
  2. 形成 20 位物理地址
  3. 传送数据:实现 CPU 与内存、I/O 端口间的数据传送

指令预取策略

  • 指令队列出现 2 个以上空字节BIU 自动按 CS:IP 确定的位置到存储器去取指令,一次取 2 个字节
  • 这就实现了"取指"与"执行"的并行(流水线)。

2.1.2 执行单元 EUExecution Unit

组成4 个部分):

  1. 16 位 ALU
  2. 16 位标志寄存器FLAGS/FR
  3. EU 控制单元
  4. 8 个 16 位通用寄存器AX、BX、CX、DX、SP、BP、SI、DI

功能

  1. 从 BIU 指令队列读取指令
  2. 由 EU 控制电路译码分析
  3. 在 EU 中计算操作数的 16 位偏移地址,送 BIU,由 BIU 的 20 位加法器形成 20 位物理地址
  4. 将取来的操作数送 ALU 进行运算
  5. 结果送寄存器或送 BIU 放回内存
  6. 本次操作状态放入标志寄存器中

8086 结构特点EU 与 BIU 并行工作

  • 串行 CPU取指→执行→存结果总线经常空闲。
  • 8086EU 在执行的同时BIU 预取下一条指令,总线利用率大幅提高降低了对存储器存取速度的要求

2.2 8086 编程结构(寄存器组)

8086 CPU 共有 14 个 16 位寄存器,分 4 类:

分类 寄存器 数量
数据寄存器 AX, BX, CX, DX 4
指针及变址寄存器 SP, BP, SI, DI 4
段寄存器 CS, DS, SS, ES 4
控制寄存器 IP, FLAGS(FR) 2

2.2.1 通用寄存器

(1) 数据寄存器4 个 16 位寄存器,每个都可拆成两个 8 位寄存器):

16 位 高 8 位 低 8 位 用途
AX AH AL 累加器 Accumulator
BX BH BL 基址寄存器 Base
CX CH CL 计数器 Counter
DX DH DL 数据寄存器 Data

例:若 (AX) = 1234H则 (AH) = 12H(AL) = 34H。

(2) 指针及变址寄存器4 个,只能 16 位使用):

  • SPStack Pointer 堆栈指针,指示栈顶位置(与 SS 配合)。
  • BPBase Pointer 基址指针,指示堆栈段中一个数据区的基位置(用于访问堆栈段中数据)。
  • SISource Index 源变址寄存器,源串操作数的指针。
  • DIDestination Index 目的变址寄存器,目的串操作数的指针。

2.2.2 段寄存器4 个)

存放当前段的段起始地址(高 16 位),与段内偏移地址一起确定一个存储单元地址:

段寄存器 名称 用途 默认偏移寄存器
CS Code Segment 代码段 当前代码段 IP
SS Stack Segment 堆栈段 当前堆栈段 SP、BP
DS Data Segment 数据段 当前数据段 BX、SI、DI
ES Extra Segment 附加段 附加数据段 DI串指令

2.2.3 控制寄存器2 个)

(1) IPInstruction Pointer指令指针

  • 存放下一条要取出指令的段内偏移地址。
  • CS:IP 决定下一条要取出的指令的物理地址。
  • IP 不能被程序直接存取,由 BIU 修改,类似于 PCProgram Counter
  • 物理地址 = CS × 16 + IP。

(2) FLAG 标志寄存器FR

16 位寄存器,定义了 9 位有效标志,分两类:

标志 类别 含义
CF (bit 0) 进位/借位 Carry Flag 状态 结果最高位有进位/借位 CF=1否则=0
PF (bit 2) 奇偶 Parity Flag 状态 结果低 8 位中"1"的个数为偶 PF=1否则=0
AF (bit 4) 辅助进位 Aux Carry 状态 D3 位(第 4 位)有进位/借位 AF=1
ZF (bit 6) 零 Zero Flag 状态 结果为 0 时 ZF=1否则=0
SF (bit 7) 符号 Sign Flag 状态 结果为负(最高位=1SF=1否则=0
OF (bit 11) 溢出 Overflow Flag 状态 有符号运算结果超出表示范围 OF=1
IF (bit 9) 中断允许 Interrupt Enable 控制 IF=1 开中断允许可屏蔽中断IF=0 关中断
DF (bit 10) 方向 Direction Flag 控制 串操作地址方向DF=0 增址DF=1 减址
TF (bit 8) 陷阱 Trap Flag 控制 TF=1 单步方式,每执行一条指令产生类型 1 中断

其他位1、3、5、12、13、14、15未定义部分保留为 1

典型例题:完成加法 35E5H + 7832H 后求各标志位

  • 35E5H + 7832H = AE17H
  • 结果最高位 A1010的最高位为 1 ⇒ CF = 0(无进位)
  • 低 8 位 17H = 0001 0111B有 4 个"1"(偶数) ⇒ PF = 1
  • D3 位E5 + 32 = 117HD3 位由 5+3=8无进位 ⇒ AF = 0
  • 结果非 0 ⇒ ZF = 0
  • 最高位为 1 ⇒ SF = 1
  • 有符号溢出判断35E5H 为负7832H 为正,结果 AE17H 仍为负,无溢出 ⇒ OF = 0

2.3 8086 微处理器外部结构(引脚)

引脚学习要点

  • 功能有效电平/沿输入/输出门类型
  • 功能:传输地址、数据、控制及辅助信号
  • 引脚名上有横杠的,表示低电平/下降沿有效(如 RD 表示低电平有效的读信号)
  • 8086 有两种工作模式最大模式最小模式(由 MN/MX 引脚选择)
  • 8 个引脚在两种模式下功能不同

2.3.1 两种模式下功能相同的引脚(共 32 个常用引脚中的大部分)

序号 引脚 功能
1,20 GND 2 个接地)
40 Vcc +5V 电源
2-16,39 AD15~AD0 地址/数据复用引脚,分时输出低 16 位地址及数据信号;经地址锁存器后输出 A15~A0
35-38 A19/S6 ~ A16/S3 地址/状态复用引脚,分时输出高 4 位地址及状态信息
17 NMI 非屏蔽中断请求,上升沿有效
18 INTR 可屏蔽中断请求,高电平有效
32 RD 读选通(低有效)
19 CLK 时钟输入,占空比 1/31/3 高电平2/3 低电平)
21 RESET 复位信号,输入 4 个时钟周期以上的高电平使 CPU 复位
22 READY 就绪信号(高有效),主存或 I/O 接口准备好时可传输数据
23 TEST 测试信号,由 WAIT 指令检查,TEST=0 继续,否则等待(用于 CPU 与外部硬件同步)
33 MN/MX 最小/最大模式选择:接 +5V 最小模式,接地最大模式
34 BHE/S7 高 8 位数据允许/状态

BHE 与 A0 的组合(关键考点!决定数据总线宽度):

BHE A0 操作 所用数据引脚
0 0 偶地址读/写一个字 AD15~AD0
0 1 奇地址读/写一个字节 AD15~AD8
1 0 偶地址读/写一个字节 AD7~AD0
1 1 无效 --
  • 从奇地址读/写一个字(非对齐字):需要 2 个总线周期
    • 第 1 周期:低 8 位 → AD15~AD8
    • 第 2 周期:高 8 位 → AD7~AD0
  • 对齐字访问1 个总线周期
  • 非对齐数据访问需 2 个总线周期

2.3.2 两种模式下功能不同的引脚重点24~31 号引脚)

最小模式下MN/MX 接 +5V

引脚 名称 功能
24 INTA 中断响应信号
25 ALE 地址锁存允许(高电平有效,下降沿锁存地址)
26 DEN 数据允许(低有效,控制数据收发器)
27 DT/R 数据发送/接收1=发送0=接收)
28 M/IO 存储器/I/O 选择(高=存储器,低=I/O
29 WR 写信号(低有效)
30 HOLD 总线保持请求(其他主设备申请总线)
31 HLDA 总线保持响应CPU 让出总线)

最大模式下MN/MX 接地):

引脚 名称 功能
25, 24 QS1, QS0 指令队列状态,指示前一个 T 状态队列状态
26, 27, 28 S2 S1 S0 总线周期状态信号,提供给 8288 总线控制器
29 LOCK 总线封锁(低有效),由前缀指令 LOCK 产生
30, 31 RQ/GT1 RQ/GT0 总线请求/允许(双向),RQ/GT0 优先级更高

复位操作(高频考点)

  • RESET 引脚输入 4 个时钟周期以上的高电平使 CPU 复位。
  • 复位后状态
    • 标志寄存器清 0FR = 0
    • IP = 0000HDS = 0000HSS = 0000HES = 0000H指令队列清空
    • CS = FFFFH
  • 复位后执行的第一条指令的物理地址
    • PA = CS × 16 + IP = FFFFH × 10H + 0000H = FFFF0H
    • 即 CPU 从物理地址 FFFF0H 处开始执行指令(位于 1MB 存储空间最顶端的 16 字节 ROM 区)

2.4 8086 的两种组成模式(最大/最小模式)

最小模式 最大模式
MN/MX 接 +5V 接地
系统构成 单机系统(只有 1 个 8086 多机系统1 主 8086 + 协处理器 8087/8089
控制信号 由 8086 自身直接产生 由总线控制器 8288 产生
典型配置 1×8284时钟+ 3×8282地址锁存+ 2×8286总线驱动 1×8284 + 2×8282 + 2×8286 + 1×8288总线控制器

8288 是最大模式区别于最小模式的关键芯片,专门用来根据 S2 S1 S0 状态产生控制信号。


2.5 8086 总线周期(时序)

2.5.1 基本概念

  • 时钟周期TCPU 主频每个时钟脉冲的持续时间,用 T 表示。
  • 总线周期CPU 通过总线进行一次读或写的过程。一个总线周期由 4 个时钟周期 T1、T2、T3、T4 组成。
  • 指令周期:执行一条指令所需的时间(由若干总线周期组成)。
  • 等待状态 Tw:当外设/存储器未准备好READY=0时插入Tw 与 T3 行为相同。
  • 中断响应周期CPU 响应可屏蔽中断时插入 2 个总线周期。
T 状态 主要操作
T1 CPU 发出地址A19/S6A16/S3 输出地址A19A16 高 4 位AD15~AD0 输出低 16 位地址ALE 有效锁存地址
T2 撤销地址;地址/数据复用线 AD 浮空;地址/状态线输出状态 S6~S3;读/写控制信号有效
T3 数据出现在 AD15~AD0 上CPU 输出数据;读:等待外设送数据);检查 READY 信号,未就绪则插入 Tw
T4 完成数据读/写,控制信号无效,结束总线操作

2.5.2 总线读周期(最小模式)信号特点

  • M/IOT2 起变有效(=读存储器,=读 I/O
  • DT/R接收CPU 读)。
  • DENT2 起变低有效(数据收发器使能)。
  • RDT2 起变低有效(读选通)。
  • ALE 在 T1 出现一个正脉冲,下降沿锁存地址。
  • T3/Tw 期间数据出现在数据总线上。

2.5.3 总线写周期(最小模式)信号特点

  • DT/R发送CPU 写)。
  • 数据在 T2 后即出现在 AD 线上(写不用等外设)。
  • WRT2 起变低有效。
  • 其余与读周期类似。

典型例题MOV AX, [2000H] 设 (DS)=1000H求物理地址

  • PA = DS × 16 + 2000H = 1000H × 10H + 2000H = 12000H
  • 从 12000H、12001H 取出字数据 3456H 送 AX高 8 位从 12001H 读出 34H低 8 位从 12000H 读出 56H

2.6 8086 存储器组织

2.6.1 层次结构(由近到远、速度由快到慢、容量由小到大)

寄存器 → CPU 内部 Cache → CPU 外部 Cache → 主存 → 外存

2.6.2 存储器分类

  • 外存磁盘、磁带、光盘、U 盘
  • 内存:
    • ROM只读MROM、PROM、EPROM、EEPROM
    • RAM随机读写双极型、MOS 型MOS 又分动态 RAM静态 RAM

2.6.3 地址空间

  • 8086 有 20 位地址线,按字节单元编址,地址范围 00000H ~ FFFFFH(共 1 MB
  • 每个存储单元对应 1 个 20 位物理地址

数据存储格式

  • 16 位)存放在任意连续两个单元中,低字节放低地址(小端方式)。
  • 字地址 = 低字节所在地址。

对齐字 vs 非对齐字

类型 定义 总线周期数
对齐字 存放在偶地址的字 1 个总线周期
非对齐字 存放在奇地址的字 2 个总线周期

2.6.4 分段管理

  • 8086 内部寄存器是 16 位,无法直接给出 20 位地址,故采用分段管理。
  • 每段最长 64 KB,段内地址连续,各段独立。
  • 段起始地址必须能被 16 整除(即低 4 位为 0所以 16 位段寄存器的内容 ×16 即为该段 20 位物理基地址。
  • 段内偏移量16 位,最大 64K 单元。

两类地址

类型 含义
物理地址 信息在存储器中实际存放的地址20 位),通过地址线传送
逻辑地址 编程中使用的地址,由段地址:段内偏移量组成

物理地址计算公式(高频重点):

物理地址 (PA) = 段地址 × 16 + 段内偏移量
             = 段地址 × 10H + 偏移量
   (20 位)        (16 位)         (16 位)

例:逻辑地址 1000:2000H 的物理地址 = 1000H × 10H + 2000H = 12000H

默认段寄存器使用规则

访问类型 默认段寄存器 可显式指定的段寄存器
取指令 CS
堆栈操作 SS
字符串操作源串 DS CS, ES, SS
字符串操作目的串 ES
一般数据访问 DS CS, ES, SS

同一物理地址可对应多个逻辑地址(如 PA=12000H 可写成 1000:2000H、1100:1200H 等)


2.7 I/O 端口组织

  • I/O 设备不能直接与 CPU 总线相连,需通过 I/O 接口芯片。
  • 端口CPU 可寻址的 I/O 接口逻辑;每个端口分配一个端口地址。
  • 8086 用低 16 位地址线对 I/O 端口编址,最多 65536 个 8 位端口。
  • 两个编号相邻的 8 位端口可组合成 1 个 16 位端口。
  • 8086 采用独立的端口编址方式(与存储器分开编址,靠 M/IO 引脚区分)。

2.8 8086 中断系统(重要补充)

2.8.1 基本概念

  • 中断CPU 正常执行时,由事件引起 CPU 暂停现行程序,转去执行服务程序,处理完后返回断点继续执行。
  • 中断源:触发中断的事件。
  • 中断系统:实现中断功能的软硬件系统。

2.8.2 中断优先级

当多个中断源同时请求时,按优先级响应。

  • 基本方法:软件查询硬件优先级排队(菊花链/8259A 中断控制器)。

2.8.3 CPU 响应外部中断的条件

  1. 一条指令执行结束后。
  2. 有中断请求。
  3. 开中断IF=1仅对 INTR

2.8.4 中断处理过程(硬件自动完成)

  1. 关中断
  2. 保护现场(标志寄存器入栈)
  3. 保护断点CS:IP 入栈)
  4. 形成中断服务程序入口地址
  5. 转入中断服务程序

2.8.5 中断服务程序结构(软件完成)

  1. 保护现场(所用寄存器入栈)
  2. 中断服务(核心)
  3. 恢复现场(寄存器出栈)
  4. 开中断STI
  5. 返回断点IRET

2.8.6 中断分类

类型 说明 中断类型码
外部中断 INTR可屏蔽、NMI非屏蔽 由 INTR8259A 提供NMI 固定为 2
软件中断 INT n、INTO溢出 OF=1、INT3断点 n 或固定
软件陷阱 除法错误(类型 0、单步中断TF=1类型 1 0、1

2.8.7 中断向量表

  • 位于存储器低地址端,1 KB00000H ~ 003FFH共 256 项。
  • 每 4 字节存放一个中断服务程序的入口逻辑地址CS:IP
    • 低地址两字节IP
    • 高地址两字节CS
  • 向量地址 = 类型码 × 4
  • 例:类型码 20H 的向量地址 = 20H × 4 = 80H从 0000:0080H 起依次存放 IP、CS

2.8.8 可屏蔽中断INTR

  • 高电平有效,IF=1 时CPU 在当前指令执行结束后响应。
  • INTR 响应需 2 个中断响应总线周期:
    • 第 1 周期:INTA 给出响应
    • 第 2 周期:从数据线读取中断类型码

2.8.9 非屏蔽中断NMI

  • 不受 IF 影响,上升沿触发,类型码固定为 2
  • 实模式下CPU 直接从中断向量表 0000:0008H ~ 0000:000BH 取出 CS:IP。

2.8.10 软件中断INT n、INTO、INT3

  • 中断类型码包含在指令中,不执行中断响应总线周期
  • 返回地址指向软件中断指令的下一条指令

二、考点总结(期末必背)

【高频】计算题考点

  • 物理地址计算PA = 段地址 × 16 + 段内偏移量PA = 段地址 × 10H + EA
    • 例:(DS)=2000H(BX)=1000HMOV AX,[BX] 取出的物理地址 = 2000H×10H + 1000H = 21000H
  • 复位后第一条指令地址PA = CS × 16 + IP = FFFFH × 10H + 0000H = FFFF0H
  • 标志位判断CF/PF/AF/ZF/SF/OF
    • 必背各标志位的判定规则(特别是 OF 与 CF 的区别)
  • 向量地址计算:向量地址 = 中断类型码 × 4
  • 存储容量计算8086 = 1 MB每段最大 64 KBI/O 端口 64 KB

【高频】简答题考点

  • BIU 与 EU 的功能(必背)
    • BIU取指、形成物理地址、传送数据
    • EU译码、执行运算、存结果、更新标志
  • 8086 结构特点取指与执行并行EU/BIU 流水线工作),提高总线利用率,降低存储器速度要求
  • 标志寄存器 9 位标志位的含义(每位都要记清楚)
  • 最小模式与最大模式的区别
    • 最小模式单机系统MN/MX 接+5V控制信号由 CPU 自身直接产生;配 8284+8282+8286
    • 最大模式多机系统MN/MX 接地,控制信号由 8288 产生;可接 8087/8089 协处理器
  • 8086 引脚分时复用AD15AD0地址/数据复用、A19/S6A16/S3地址/状态复用),用 ALE 锁存地址
  • BHE 与 A0 组合决定数据总线宽度4 种组合,对齐字 1 个总线周期,非对齐字 2 个)
  • 段寄存器的作用与默认搭配CS:IP、SS:SP/BP、DS:BX/SI/DI、ES:DI
  • 分段管理的原因:内部寄存器 16 位无法直接给出 20 位物理地址;段起始地址必须能被 16 整除
  • 物理地址与逻辑地址的关系同一 PA 可对应多个逻辑地址
  • 复位后寄存器状态FR=0、IP=0、DS=0、SS=0、ES=0、CS=FFFFH、指令队列清空
  • 指令预取策略:队列有 2 个以上空字节时 BIU 自动取指一次 2 字节
  • 总线周期 4 个 T 状态各做什么
  • 中断响应条件、处理过程、软件中断与硬件中断的区别
  • 中断向量表的结构与向量地址计算

【高频】分析题考点

  • 给定总线时序波形图,判断处于哪个 T 状态、读还是写、内存还是 I/O
    • 看 M/IO高=内存,低=I/O
    • 看 DT/R高=写,低=读
    • 看 RD/WR 是否有效
    • 看 DEN、ALE 的电平变化
  • 给定 BHE、A0 状态,判断访问类型4 种组合)
  • 给定中断类型码求向量地址及对应物理单元中存放的内容顺序

重点速记表

项目 数值/特征
数据总线8086 16 位
地址总线 20 位
寻址空间 1 MB (00000H ~ FFFFFH)
每段最大 64 KB
段寄存器位数 16 位
物理地址位数 20 位
时钟占空比 1/3/ 2/3
主频范围 4.77 ~ 10 MHz
指令队列 6 字节
寄存器总数 14 个 16 位
复位后 CS FFFFH
复位后 IP 0000H
复位后首指令地址 FFFF0H
复位高电平持续 ≥ 4 个时钟周期
总线周期 T 状态数 4T1、T2、T3、T4
总线控制器(最大模式) 8288
时钟发生器 8284
地址锁存器 8282或 74LS373
总线驱动器 8286或 74LS245
协处理器(最大模式) 8087浮点、8089I/O
中断向量表大小 1 KB00000H ~ 003FFH
中断类型码数 256 个
向量地址 类型码 × 4
NMI 类型码 2
电源 +5V单电源

典型例题

例 1:已知 (CS)=1200H(IP)=0200H求物理地址

  • PA = 1200H × 10H + 0200H = 12200H

例 2:已知 (DS)=3000H求访问数据单元 [5000H] 的物理地址

  • PA = 3000H × 10H + 5000H = 35000H

例 3:物理地址 20000H 可对应哪些逻辑地址?

  • 段地址 = PA ÷ 16偏移 = PA % 16
  • 2000:0000H、2001:0FF0H、20FF:0010H 等(无数种)

例 4:求加法 35E5H + 7832H 的标志位(结果 = AE17H

  • CF=0、PF=117H 中"1"为偶数、AF=0、ZF=0、SF=1、OF=0

例 5:类型码 08H 的中断,对应向量地址 = 08H × 4 = 20H,从 0000:0020H 起依次存放 IP、CS

例 6:某总线周期波形中 M/IO=1、DT/R=0、RD=0说明是读存储器操作

  • ALE 在 T1 有效锁存地址T3 数据由存储器送到 CPU

复习建议:本章内容多且杂,请按"结构BIU/EU→ 寄存器组(特别是标志位)→ 引脚 → 物理地址计算 → 总线时序 → 中断"的顺序复习。务必多练计算题(物理地址、向量地址、标志位),并熟记简答题的关键点。