# 第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 地址**,共 **64K(65536)个 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~255;DX 间接寻址时范围为 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 操作可能影响存储层次 | | 典型代表 | 80x86(8086/8088)、MCS-51 | 6800/68000、MIPS、ARM(部分) | ### 6.3 输入输出控制方式(四种基本方式) 课件明确给出 **四种基本控制方式**: 1. **程序查询方式**(Polled I/O) 2. **程序中断方式**(Interrupt I/O) 3. **DMA 方式**(直接存储器存取) 4. **I/O 处理机方式**(IOP,I/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 发中断请求 INTR,CPU 响应后转去执行 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 发 HRQ,CPU 让出地址、数据、部分控制总线 | DMAC 控制总线;CPU 暂停 | | 周期扩展 | 由 DMAC 发出请求给时钟电路,加宽 CPU 时钟周期 | 一次只能传送一个字节 | | 周期挪用 | 利用 CPU 不访问内存的周期进行 DMA 操作 | 不打断 CPU,CPU 与 DMA 并行 | **DMA 控制器基本功能**(6 项): 1. 接收外设 DMA 请求,向 CPU 发总线请求 HRQ; 2. CPU 响应后(HLDA),DMAC 接管总线控制权; 3. 接管总线后向地址总线发送地址信号,并自动修改地址指针; 4. 在 DMA 传送期间,发出存储器或 I/O 接口的读/写控制信号; 5. 统计传送字节数,判断 DMA 传送是否结束; 6. 传送结束时向 CPU 发结束信号,将总线控制权交还给 CPU。 **DMA 传送的一般工作过程**(以存储器 → 外设为例,10 步): 1. 初始化外设接口与 DMAC,设置存储器起始地址、传送字节数等参数; 2. 外设就绪 → 接口向 DMAC 发 DMA 请求(DREQ); 3. DMAC 向 CPU 发总线请求(HRQ); 4. CPU 响应并发总线应答(HLDA),CPU 让出总线; 5. DMAC 向外设接口发 DMA 响应(DACK); 6. DMAC 把要读取的存储单元地址送到地址线; 7. DMAC 发读存储器信号(MEMR); 8. 存储器把数据送上数据线; 9. DMAC 发 I/O 写信号(IOW),将数据写入 I/O 接口; 10. DMAC 自动修改地址、字节计数器,判断是否传送结束;结束时撤销 HRQ,CPU 收回总线。 **适用场景**:外设速度快、一次传输数据量大(磁盘、网卡、声卡等高速外设)。 #### 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~CAS2,SP/EN)。 **优先级(默认)**:**IR0 最高 → IR7 最低**。 **响应过程(两个 INTA 负脉冲)**: - 第一个 INTA:IRR 锁存失效;ISR 对应位置 1;IRR 中对应位清 0。 - 第二个 INTA:将 ICW2 内容送 D7~D0,CPU 读取作为中断类型码;若 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 | OCW3:RR=1,RIS=0 | | 0 | 0 | 0 | 1 | 数据总线 ← ISR | OCW3:RR=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=1),8259A 回送查询字(I + W2W1W0) | | 5 | 中断结束方式 | 自动 EOI(AEOI)或命令 EOI(普通 EOI / 特殊 SEOI) | | 6 | 读 8259A 状态 | 读 IRR(OCW3:RR=1,RIS=0)/ ISR(RR=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)初始化命令字 ICW1(A0=0,写入偶地址)** | D7 D6 D5 | D4=1 | D3=LTIM | D2 | D1=SNGL | D0=IC4 | | --- | --- | --- | --- | --- | --- | | × × × | 1(标志) | 1=电平触发 / 0=边沿触发 | × | 1=单片 / 0=级联 | 1=需 ICW4 / 0=不要 | **写入 ICW1 后 8259A 自动复位**:清 IMR、ISR;IRR 状态可读;优先级排队为 IR0 最高 IR7 最低;特殊屏蔽方式复位;自动 EOI 循环方式复位。 **(2)ICW2(A0=1)** — 设置中断类型码 - 高 5 位(T7~T3)由程序设定; - 低 3 位(D2~D0)由 8259A 按引入中断请求的引脚 IR0~IR7 三位编码自动填入。 举例(课件原例): - ICW2 = 80H = 1000 0000B → IR3 的类型码 = 1000 0011B = 83H; - 若要使 IR5 的类型码 = 95H,则 ICW2 = 90H(90H~97H 均可)。 **(3)ICW3(A0=1)** - 主片格式:S0~S7 表示 IR0~IR7 是否接从片(1=接,0=未接); - 从片格式:高 5 位为 0,低 3 位 ID2~ID0 表示该从片连到主片的哪条 IRx 上。 **(4)ICW4(A0=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 | **(5)OCW1(A0=1)** — 屏蔽字 M7~M0 对应 IR7~IR0(1=屏蔽,0=允许)。 **(6)OCW2(A0=0)** — 控制中断循环与结束命令,含 R、SL、EOI、L2~L0 等位。组合实现: - 正常 EOI(001 00000)+ L2-L0; - 特殊 EOI(011 + L2L1L0); - 自动 EOI(010 + L2L1L0 自动循环下); - 设置特殊循环最低优先级(110 + L2L1L0)等。 **(7)OCW3(A0=0)** — 设置查询方式、特殊屏蔽方式、寄存器读取方式(RR/RIS 用于读 IRR/ISR,P 用于查询命令)。 **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 个字节检测 DREQ:DREQ 无效停止,有效继续 | | 级联方式 | 用于连接多个 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) 自动初始化方式** - 通道完成数据块传送并产生 EOP(TC 或外部)时,**自动把基地址/基字节数的内容装入当前地址/当前字节计数器**,使通道恢复初值,准备下一次 DMA。 **(6) 存储器到存储器传送** - 占用通道 0、1;0 通道作源(地址),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 等)。