Files
Operating-System/8086/Exam/第6章 输入输出.md
2026-06-29 21:12:21 +08:00

462 lines
24 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第6章 输入输出 — 期末复习总结
---
## 一、详细内容分析
### 6.1 输入输出与接口概述
#### 6.1.1 接口与端口
- **输入输出I/O**CPU计算机主机与外部设备之间的信息交换。
- **输入输出技术**CPU 与外部设备之间的连接与信息交换技术。
- **接口Interface**CPU 与外部设备之间的硬件连接逻辑及相应的控制软件。
- **接口技术**:完成 CPU 与外部设备之间连接及信息交换有关的软、硬件技术方法。
- **端口Port**:接口电路中那些完成信息传送、**可由程序寻址并进行读写操作的逻辑单元**(往往是寄存器)。
- 接口与端口不同:**接口是物理/逻辑的整体,端口是接口内可寻址的寄存器单元**。
- 同一个接口中通常包含三类端口:数据端口、状态端口、控制端口。
**为什么要使用接口4 个原因)**
1. 外设种类繁多,与 CPU 不能直接互联及信息交互;
2. 外部设备工作速度变化范围大,与 CPU 之间不匹配;
3. 外设信号类型不同(数字、模拟等),与 CPU 使用的数据类型不同;
4. 外设信息格式复杂(并行、串行等),与 CPU 使用的数据格式不一致。
#### 6.1.2 接口的功能
1. **地址译码或设备选择**:接口进行地址译码,产生设备选择信号,使微处理器与指定外设交换信息。
2. **数据缓冲和锁存**:数据总线是公共双向总线,所有设备分时复用,只允许被选中的设备在读/写周期内占用。
3. **信息格式与电平的转换**:转换外设与 CPU 之间在格式、信号类型、电平范围上的差异。
4. **数据传送的协调控制**:协调 CPU 与外设的传输通路逻辑及时间关系。
#### 6.1.3 接口的一般编程结构
I/O 接口的编程结构(即“从编程角度看到的接口”)由三类寄存器构成:
| 端口类型 | 作用 |
| --- | --- |
| 数据端口 | 存储输入/输出数据的寄存器 |
| 状态端口 | 存储设备或接口状态寄存器 |
| 控制端口 | 存放设备或接口控制信号的寄存器 |
**接口与 CPU 的连接信号**
- 数据线:传输对各端口访问的信息;
- 地址线:对接口/端口寻址;
- 控制线:对接口/端口进行读写等控制。
**接口与外设的连接信号**
- 数据线:传输数字量、模拟量、开关量;
- 状态线:传输外设的状态信号;
- 控制线:传输控制外设的令信号。
### 6.2 I/O 端口编址方式(标准知识补充)
8086/8088 CPU 采用 **独立编址I/O 独立编址 / 端口编址)** 方式:
- **I/O 地址空间大小**8086 提供 **16 位 I/O 地址**,共 **64K65536个 8 位端口**,可组成 32K 个 16 位端口。
- 地址范围:`0000H ~ FFFFH`
- 使用专门的 I/O 指令 **IN/OUT** 与外设通信,与访问存储器的指令 **MOV** 等不通用。
- 引脚 `M/IO`(在 8088 上为 `M/IO`)区分访问对象:`=1` 访问存储器,`=0` 访问 I/O 端口。
**IN 指令格式**
| 形式 | 语法 | 含义 |
| --- | --- | --- |
| 直接端口寻址 | `IN AL, n``IN AX, n` | 从端口 n 读 8/16 位数据 |
| 间接端口寻址 | `IN AL, DX``IN AX, DX` | 从 DX 所指端口读 8/16 位数据 |
**OUT 指令格式**
| 形式 | 语法 | 含义 |
| --- | --- | --- |
| 直接端口寻址 | `OUT n, AL``OUT n, AX` | 将 AL/AX 写入端口 n |
| 间接端口寻址 | `OUT DX, AL``OUT DX, AX` | 将 AL/AX 写入 DX 所指端口 |
> 注:直接端口寻址时 n 为 8 位立即数,范围 0~255DX 间接寻址时范围为 0~65535。
**两种编址方式对比**
| 项目 | 独立编址I/O 映射 / Port-mapped I/O | 统一编址(内存映射 / Memory-mapped I/O |
| --- | --- | --- |
| 地址空间 | I/O 端口与存储器各自独立编址 | I/O 端口占用存储器地址空间的一部分 |
| 访问指令 | 必须使用专用 IN/OUT 指令 | 可使用全部访存指令MOV 等) |
| 优点 | 不占用存储器地址空间I/O 程序与用户程序清晰分开;译码简单、速度快 | 寻址灵活;可用丰富指令;总线结构统一 |
| 缺点 | 需要专用 I/O 引脚与控制信号;指令少、功能弱 | 占用存储器地址空间译码复杂I/O 操作可能影响存储层次 |
| 典型代表 | 80x868086/8088、MCS-51 | 6800/68000、MIPS、ARM部分 |
### 6.3 输入输出控制方式(四种基本方式)
课件明确给出 **四种基本控制方式**
1. **程序查询方式**Polled I/O
2. **程序中断方式**Interrupt I/O
3. **DMA 方式**(直接存储器存取)
4. **I/O 处理机方式**IOPI/O Processor
#### 6.3.1 程序查询方式
程序查询方式又分为 **无条件传送方式****条件(查询)传送方式**
**1无条件传送方式**
- 程序需要通过接口进行输入/输出时,**直接使用 IN/OUT 指令访问端口**,无需查询外设状态。
- 适用始终处于就绪状态的外设如开关、LED、简单机械
- 示例:
```asm
MOV AL, 12H ; 准备数据 12H
OUT 80H, AL ; AL 内容输出到端口 80H
```
- 端口 80H 中输出锁存器和输入缓冲器共用地址,由 RD/WR 信号区分访问哪个寄存器。
**2查询输入传送方式**
文字描述工作流程:
1. CPU 读状态端口(地址 E0H取出状态字D0 = 1 表示输入数据准备好);
2. 测试状态位 D0若 D0 = 0未就绪继续返回步骤 1 循环查询;
3. 若 D0 = 1就绪CPU 读数据端口(地址 E2H同时清除状态触发器输入锁存器空
4. 处理读到的数据,返回步骤 1继续输入下一个数据。
典型查询输入程序段:
```asm
A1: IN AL, 0E0H ; 取状态字(状态在 D0 位)
TEST AL, 01H ; 测试状态位
JZ A1 ; D0=0 未准备好,继续查询
IN AL, 0E2H ; 读输入数据
; …… ; 数据处理
JMP A1 ; 返回继续查询,输入下一个数据
```
**3查询输出传送方式**
文字描述工作流程:
1. CPU 写数据端口(地址 E4H输出数据并使状态触发器置 1设备“忙”
2. CPU 读状态端口(地址 E4H取状态字
3. 测试状态位 D0若 D0 = 1设备忙继续查询等待
4. 外设取走数据后回送 ACK清状态触发器使 D0 = 0
5. CPU 准备下一个数据,重复以上过程。
典型查询输出程序段:
```asm
MOV AL, 41H ; 数据 41H 送 AL
OUT 0E4H, AL ; 数据写入数据锁存器,状态触发器置 1
A1: IN AL, 0E4H ; 取状态字
TEST AL, 01H ; 测试状态位
JNZ A1 ; D0=1 设备忙,继续查询
MOV AL, 42H ; 下一个数据 42H 送 AL
OUT 0E4H, AL ; 下一个数据存入锁存器
; ……
```
**程序查询方式特点**
- 适合外设速度慢、请求响应实时性要求不高、一次传输数据量不大、对 CPU 工作效率要求不高的场合;
- **CPU 与外设只能串行工作**各外设之间也只能串行工作CPU 利用率低。
#### 6.3.2 中断方式
**基本思想**:外设就绪时向 CPU 发中断请求 INTRCPU 响应后转去执行 ISR中断服务程序完成一次数据交换后返回原程序。
**工作流程**
1. 初始化:设置外设及接口,使其在就绪时能向 CPU 发中断请求;准备 ISR含中断矢量表入口设置相关状态标志
2. CPU 执行主程序(不等待外设就绪,可并行工作);
3. 外设就绪时向 CPU 发中断请求INTR
4. CPU 响应中断INTA 中断响应),保护现场,转入 ISR
5. 在 ISR 中完成一次数据传送;
6. 如已完成全部传送,则关闭该中断;否则恢复现场、返回主程序继续运行;
7. 后续外设再次就绪,可再次触发中断。
**优点**CPU 与外设可并行工作,提高系统效率;适合外设速度较慢、请求随机性、响应实时性要求较高、一次传输数据量不大的场合。
#### 6.3.3 DMA 方式
**为何引入 DMA**:中断方式仍需 CPU 执行 ISR保护断点、切换上下文来逐字节传送对于高速大量数据效率仍低。
**DMA 操作**DMA 控制器DMAC直接接管总线**外设与存储器之间直接交换数据**,无需 CPU 介入。
**DMA 操作的三种基本方法**
| 方法 | 含义 | 特点 |
| --- | --- | --- |
| CPU 停机方式 | DMAC 发 HRQCPU 让出地址、数据、部分控制总线 | DMAC 控制总线CPU 暂停 |
| 周期扩展 | 由 DMAC 发出请求给时钟电路,加宽 CPU 时钟周期 | 一次只能传送一个字节 |
| 周期挪用 | 利用 CPU 不访问内存的周期进行 DMA 操作 | 不打断 CPUCPU 与 DMA 并行 |
**DMA 控制器基本功能**6 项):
1. 接收外设 DMA 请求,向 CPU 发总线请求 HRQ
2. CPU 响应后HLDADMAC 接管总线控制权;
3. 接管总线后向地址总线发送地址信号,并自动修改地址指针;
4. 在 DMA 传送期间,发出存储器或 I/O 接口的读/写控制信号;
5. 统计传送字节数,判断 DMA 传送是否结束;
6. 传送结束时向 CPU 发结束信号,将总线控制权交还给 CPU。
**DMA 传送的一般工作过程**(以存储器 → 外设为例10 步):
1. 初始化外设接口与 DMAC设置存储器起始地址、传送字节数等参数
2. 外设就绪 → 接口向 DMAC 发 DMA 请求DREQ
3. DMAC 向 CPU 发总线请求HRQ
4. CPU 响应并发总线应答HLDACPU 让出总线;
5. DMAC 向外设接口发 DMA 响应DACK
6. DMAC 把要读取的存储单元地址送到地址线;
7. DMAC 发读存储器信号MEMR
8. 存储器把数据送上数据线;
9. DMAC 发 I/O 写信号IOW将数据写入 I/O 接口;
10. DMAC 自动修改地址、字节计数器,判断是否传送结束;结束时撤销 HRQCPU 收回总线。
**适用场景**:外设速度快、一次传输数据量大(磁盘、网卡、声卡等高速外设)。
#### 6.3.4 I/O 处理机方式
- 为使 CPU 完全摆脱 I/O 管理,引入了 **I/O 处理机IOP** 概念。
- IOP 拥有自己的指令系统,可独立执行程序,承担全部 I/O 操作(如 Intel 8089配合 8086/8088 使用)。
- IOP 与 CPU 程序并行执行,可独立形成外设所需控制命令与定时信号。
### 6.4 四种传送方式对比表(必背)
| 对比项 | 程序查询方式 | 程序中断方式 | DMA 方式 | I/O 处理机方式 |
| --- | --- | --- | --- | --- |
| 数据传送控制者 | CPU | CPU | DMAC | IOP |
| CPU 是否介入 | 完全介入 | 每次传送介入 | 不介入 | 不介入 |
| CPU 工作效率 | 最低(忙等) | 较高(可并行) | 最高 | 最高 |
| 数据传送单位 | 字(节) | 字(节) | 数据块 | 数据块/复杂 I/O |
| 传送速度 | 慢 | 中 | 快 | 快 |
| 适用场景 | 简单低速、外设始终就绪 | 中低速、随机请求 | 高速、大数据量 | 复杂系统、多外设 |
| 硬件代价 | 低(简单接口) | 中(中断控制器) | 高DMAC | 最高IOP |
| 并行性 | 无CPU 与外设串行) | 高CPU 与外设并行) | 高CPU 仍工作) | 高CPU/IOP 并行) |
### 6.5 可编程中断控制器 8259A
#### 6.5.1 8259A 的主要功能
1. 每片管理 **8 级优先权中断源**,通过级联最多管理 **64 级** 优先权中断源;
2. 每级中断可单独屏蔽(通过 IMR
3. 向 CPU 提供可编程的中断类型码(对 8086~Pentium 即中断向量号);
4. 有多种工作方式,可通过编程选择;
5. 可与 8086~Pentium CPU 直接连接,不需外加硬件电路。
#### 6.5.2 内部结构
- **IRR**Interrupt Request Register保存 8 位中断请求信号;
- **ISR**In-Service Register保存正在被 CPU 处理的中断请求;
- **PR**Priority Resolver优先级分辨器确定 IRR 中各位优先级,决定是否向 CPU 发 INT
- **IMR**Interrupt Mask Register / OCW1中断屏蔽寄存器
- 控制逻辑:发出 INT 与接收 INTA
- 数据总线缓冲器、读/写逻辑、级联控制CAS0~CAS2SP/EN
**优先级(默认)****IR0 最高 → IR7 最低**。
**响应过程(两个 INTA 负脉冲)**
- 第一个 INTAIRR 锁存失效ISR 对应位置 1IRR 中对应位清 0。
- 第二个 INTA将 ICW2 内容送 D7~D0CPU 读取作为中断类型码;若 ICW4 的 AEOI = 1则 ISR 对应位自动清 0。
#### 6.5.3 端口及读写控制
通过 CS、A0、RD、WR 组合区分读/写命令、读/写状态。
| CS | A0 | RD | WR | 功能 | 标志位 |
| --- | --- | --- | --- | --- | --- |
| 0 | 0 | 1 | 0 | 数据总线 → ICW1 | D4 = 1 |
| 0 | 0 | 1 | 0 | 数据总线 → OCW2 | D4D3 = 00 |
| 0 | 0 | 1 | 0 | 数据总线 → OCW3 | D4D3 = 01 |
| 0 | 1 | 1 | 0 | → OCW1 / ICW2 / ICW3 / ICW4 | — |
| 0 | 0 | 0 | 1 | 数据总线 ← IRR | OCW3RR=1,RIS=0 |
| 0 | 0 | 0 | 1 | 数据总线 ← ISR | OCW3RR=1,RIS=1 |
| 0 | 0 | 0 | 1 | 数据总线 ← 查询字 | 查询方式 |
| 0 | 1 | 0 | 1 | 数据总线 ← IMR | 直接读 |
> A0 = 0 偶地址A0 = 1 奇地址。
#### 6.5.4 8259A 的工作方式10 种)
| 序号 | 工作方式 | 含义 |
| --- | --- | --- |
| 1 | 全嵌套方式 | IR0 最高、IR7 最低的固定优先级ISR 置位期间屏蔽同/低级;如 IF 开放可响应高级中断 |
| 2 | 循环优先级方式 | 自动循环:被服务的中断源自动降为最低;特殊循环:由编程指定某一中断源为最低 |
| 3 | 特殊屏蔽方式 | 仅屏蔽本级,其他全部开放(无论高低级均可中断) |
| 4 | 程序查询方式 | CPU 发查询命令OCW3 中 P=18259A 回送查询字I + W2W1W0 |
| 5 | 中断结束方式 | 自动 EOIAEOI或命令 EOI普通 EOI / 特殊 SEOI |
| 6 | 读 8259A 状态 | 读 IRROCW3RR=1,RIS=0/ ISRRR=1,RIS=1/ IMR直接读 |
| 7 | 中断请求触发方式 | 边沿触发LTIM=0/ 电平触发LTIM=1 |
| 8 | 缓冲器方式 | 8259A 与数据总线之间加驱动器SP/EN 作输出 |
| 9 | 特殊的全嵌套方式 | 用于多片级连,从片的高级中断仍可申请中断 |
| 10 | 多片级联方式 | 1 个主片至多带 8 个从片,扩展至 64 级 |
**多片级联要点**
- 主/从由 ICW4 的 M/S 位(缓冲方式下)或 SP/EN 引脚(非缓冲方式下 SP=1 主SP=0 从)确定;
- 主片的 CAS0~CAS2 输出被响应的从片编号,从片接收并比对。
#### 6.5.5 8259A 的编程(命令字体系)
8259A 的命令字分两部分:
| 类别 | 数量 | 是否按序写入 | 用途 |
| --- | --- | --- | --- |
| 初始化命令字 ICW1~ICW4 | 4 | 按固定顺序写入 | 系统复位后设置基本工作方式 |
| 操作命令字 OCW1~OCW3 | 3 | 不按顺序 | 工作中可随时写入,动态控制 |
**1初始化命令字 ICW1A0=0写入偶地址**
| D7 D6 D5 | D4=1 | D3=LTIM | D2 | D1=SNGL | D0=IC4 |
| --- | --- | --- | --- | --- | --- |
| × × × | 1标志 | 1=电平触发 / 0=边沿触发 | × | 1=单片 / 0=级联 | 1=需 ICW4 / 0=不要 |
**写入 ICW1 后 8259A 自动复位**:清 IMR、ISRIRR 状态可读;优先级排队为 IR0 最高 IR7 最低;特殊屏蔽方式复位;自动 EOI 循环方式复位。
**2ICW2A0=1** — 设置中断类型码
- 高 5 位T7~T3由程序设定
- 低 3 位D2~D0由 8259A 按引入中断请求的引脚 IR0~IR7 三位编码自动填入。
举例(课件原例):
- ICW2 = 80H = 1000 0000B → IR3 的类型码 = 1000 0011B = 83H
- 若要使 IR5 的类型码 = 95H则 ICW2 = 90H90H~97H 均可)。
**3ICW3A0=1**
- 主片格式S0~S7 表示 IR0~IR7 是否接从片1=接0=未接);
- 从片格式:高 5 位为 0低 3 位 ID2~ID0 表示该从片连到主片的哪条 IRx 上。
**4ICW4A0=1**
| D7 D6 D5 | D4 | D3 | D2 | D1 | D0 |
| --- | --- | --- | --- | --- | --- |
| 0 0 0 | SFNM | BUF | M/S | AEOI | μPM |
| 位 | 含义 |
| --- | --- |
| SFNM | 1=特殊全嵌套 / 0=全嵌套 |
| BUF | 1=缓冲方式 / 0=非缓冲 |
| M/S | 缓冲方式下1=主片 / 0=从片 |
| AEOI | 1=自动 EOI / 0=正常 EOI |
| μPM | 1=8086~Pentium / 0=MCS-80/85 |
**5OCW1A0=1** — 屏蔽字 M7~M0 对应 IR7~IR01=屏蔽0=允许)。
**6OCW2A0=0** — 控制中断循环与结束命令,含 R、SL、EOI、L2~L0 等位。组合实现:
- 正常 EOI001 00000+ L2-L0
- 特殊 EOI011 + L2L1L0
- 自动 EOI010 + L2L1L0 自动循环下);
- 设置特殊循环最低优先级110 + L2L1L0等。
**7OCW3A0=0** — 设置查询方式、特殊屏蔽方式、寄存器读取方式RR/RIS 用于读 IRR/ISRP 用于查询命令)。
**ICW 写入顺序**(图 6.5.3
1. 写 ICW1设置是否级联、触发方式、是否使用 ICW4
2. 写 ICW2设置中断类型码高 5 位);
3. 若 ICW1 中 SNGL=0级联方式→ 写 ICW3主片/从片分别写入);
4. 若 ICW1 中 IC4=1 → 写 ICW4特殊全嵌套/缓冲方式/自动结束/CPU 类型)。
### 6.6 DMA 控制器 8237A
#### 6.6.1 8237A 主要功能
1. 每片有 **4 个独立 DMA 通道**
2. 每个通道的 DMA 请求可分别编程允许/禁止;
3. 优先级两种:**固定优先级DREQ0 最高DREQ3 最低)**、**循环优先级**
4. 支持 3 种传送类型:**DMA 读、DMA 写、DMA 校验**
5. 可编程改变 DMA 读/写周期;
6. 4 种工作方式:**单字节传送、数据块传送、请求传送、级联方式**
7. 多片级联可扩展通道数(主片 4 通道 + 从片扩展);
8. DMA 结束方式两种:①字节计数器减 1 由 0 变 FFFFH②外界输入 EOP 负脉冲强制结束;
9. DMA 启动方式两种:①外设 DREQ②软件编程内部启动。
#### 6.6.2 内部组成
- 缓冲器组A3~A0、A7~A4、D7~D0
- 时序和控制逻辑(含 EOP、RESET、CS、READY、CLOCK、AEN、ADSTB、MEMR、MEMW、IOR、IOW
- 优先权编码逻辑DREQ0~3、DACK0~3、HRQ、HLDA
- 寄存器组:基地址寄存器、当前地址寄存器(各 16 位)、基字节计数器、当前字节计数器(各 16 位)、方式寄存器、命令寄存器、屏蔽寄存器、请求寄存器、状态寄存器、暂存寄存器;
- 命令控制逻辑、先/后触发器(控制 8 位/16 位数据总线复用)。
#### 6.6.3 端口地址分配(表 6.6.1 摘要)
每个通道占 2 个端口地址A3~A0 的低 2 位选通道(第 0 通道对应 0000/0001依此类推低 3 位选寄存器(基地址/当前地址 vs 基字节数/当前字节数)。高 4 位A7~A4由地址总线驱动。表后部为公共寄存器命令、状态、请求、屏蔽、方式、暂存、清先/后触发器、复位、四位屏蔽字等。
#### 6.6.4 8237A 工作方式6 类)
**(1) 主从模态**
- **主态方式**DMAC 作为总线主控者(如同 CPU可对外设/存储器读写;
- **从态方式**CPU 是总线主控者DMAC 同普通 I/O 接口(被 CPU 通过端口读写)。
**(2) 4 种传送方式**
| 方式 | 含义 |
| --- | --- |
| 单字节传送 | 每次只传 1 个字节后释放总线,下一字节再 HRQ 重新申请 |
| 数据块传送 | 一次 DMA 请求完成整个数据块的全部传送结束自动交还总线TC 或 EOP 终止)|
| 请求传送 | 类似数据块,但每传 1 个字节检测 DREQDREQ 无效停止,有效继续 |
| 级联方式 | 用于连接多个 8237A 扩展通道;从片 HRQ、HLDA → 主片某通道的 DREQ、DACK |
**(3) 3 种传送类型**
- DMA 读MEMR + IOW把存储器数据读入 I/O 设备;
- DMA 写IOR + MEMW把 I/O 设备数据写入存储器;
- DMA 校验:伪传输,地址仍产生但 MEMR/IOW/MEMW/IOR 全无效。
**(4) 优先级编码**
- 固定优先级DREQ0 最高DREQ3 最低;
- 循环优先级:被响应的通道降为最低,其下一级升为最高;
- **8237A 不支持嵌套**:一个通道请求被响应后,其它 3 个通道请求被禁止,优先级排队只在 DMA 响应前有效。
**(5) 自动初始化方式**
- 通道完成数据块传送并产生 EOPTC 或外部)时,**自动把基地址/基字节数的内容装入当前地址/当前字节计数器**,使通道恢复初值,准备下一次 DMA。
**(6) 存储器到存储器传送**
- 占用通道 0、10 通道作源地址1 通道作目的(地址与计数);
- 0 通道用软件 DREQ 启动。
---
## 二、考点总结
### 高频考点
- **【高频】I/O 端口两种编址方式对比**(独立 vs 统一) —— 必考选择题/简答题
- **【高频】四种数据传送方式对比**(程序查询 / 中断 / DMA / IOP —— 选择题必考
- **【高频】中断传送与 DMA 传送的区别**:是否介入、传送单位、适用场合、硬件代价
- **【高频】8259A**:单片 8 级中断;级联可扩展至 **64 级**1 主 + 8 从);初始化命令字 **ICW1~ICW4**(按固定顺序写入);操作命令字 **OCW1~OCW3**(随时写入)
- **【高频】8237A**:单片 **4 通道**级联可扩展4 种传送方式3 种传送类型2 种优先级
- **【高频】程序查询传送流程**(无条件 / 条件输入 / 条件输出) —— 简答题
### 其他常考点
- **接口与端口的区别**:接口是整体,端口是接口内可寻址的寄存器
- **接口的 4 大功能**:地址译码、数据缓冲锁存、电平与格式转换、协调控制
- **DMA 控制器基本功能6 条)**:掌握送地址、计数、判断结束等
- **DMA 传送一般过程10 步)**以存储器→外设为例DREQ/HRQ/HLDA/DACK/MEMR/IOW 信号流程
- **8259A 内部结构 4 大件**IRR、ISR、PR、控制逻辑+IMR、级联
- **8259A 的两个 INTA 负脉冲** 完成动作:置 ISR、清 IRR、送 ICW2 内容
- **8259A 10 种工作方式** 中需重点掌握的:全嵌套、特殊屏蔽、循环优先级、查询方式、中断结束、自动 EOI、级联
- **8259A ICW2 中断类型码**:高 5 位程序设定,低 3 位由 IRx 自动填入IR0~IR7 → 000~111
- **8237A 工作方式 6 大类**:主从模态、传送方式(单字节/数据块/请求/级联)、传送类型(读/写/校验)、优先级、自动初始化、存储器到存储器
- **CPU 三种 DMA 操作方法**CPU 停机、周期扩展、周期挪用
### 常见题型
- **选择 / 填空题**
- 四种传送方式对比(哪些 CPU 不介入、谁控制总线、传送单位、适用场景)
- 8259A 单片多少级、级联最多多少级
- 8237A 单片多少通道、级联方式如何连接
- 8259A 初始化命令字的个数与写入顺序
- OCW1 中断屏蔽字中 0/1 的含义
- ICW2 中断类型码的高/低 3 位的来源
- DMA 控制器三种操作方法的区别
- 8237A 的 DREQ0~DREQ3 优先级高低(固定优先级时)
- 程序查询方式中状态触发器 D0 位 0/1 的意义
- **简答题 / 问答题**
- 简述 DMA 传送过程(外设 → 存储器 或 存储器 → 外设)
- 简述中断传送过程(请求 → 响应 → ISR → 返回)
- 简述 8259A 初始化的命令字顺序
- 比较独立编址与统一编址的优缺点
- 8259A 两个 INTA 负脉冲期间各完成什么动作
- 8237A 单字节/数据块/请求三种传送方式的区别
- 8259A 全嵌套方式与特殊屏蔽方式的区别
- 解释查询输入/输出过程并画出流程
- **分析 / 设计题**
- 给定外设(速度、数据量、响应要求),选择合适的传送方式并给出理由
- 给定 8259A 级联结构,判断主/从、识别 ICW3 写法
- 给定中断类型码基准值,求某 IRx 的类型码(或反求 ICW2
- 写一个简单查询输入或查询输出的程序段
- 设计 8259A 初始化程序段(含 ICW1、ICW2、ICW3、ICW4 与 OCW1
- 设计一个 DMA 传送过程,给出初始化参数(基地址、字节数)
### 答题套路提示
- 回答 8259A/DMA 类简答题时,**先点明控制器特性**(级数/通道数),**再列出命令字/工作方式****最后给出步骤或程序框架**。
- 回答传送方式对比时,使用表格 4 列控制方式、CPU 介入、传送单位、适用场景),简洁明了。
- 涉及“过程”类简答时,**按时间顺序列出步骤**,并在关键信号处标出(如 DREQ、HRQ、HLDA、INTA 等)。