--- tags: - 接口与通讯技术 - 8259A - 中断管理 - 重点复习 create time: 2026-06-28 15:00 --- # 8259A 中断管理基础 ## 概述 82C59A(8259A)是 x86 系统中最核心的中断管理芯片,在 3 套试卷中出现了 **6 道填空题**,是最高频考点。本专题聚焦填空题常考的四个核心知识点:单片管理级数、级联扩展、中断类型号传递机制以及中断号取值范围。 ## 正文 ### 1. 单片管理级数 一片 82C59A 内部有 **8 个中断请求输入引脚**(IR0 ~ IR7),因此单片最多管理 **8 级**中断。 | 引脚 | 编号 | 说明 | |------|------|------| | IR0 | 最高优先级 | 默认优先级最高 | | IR1 ~ IR6 | 中间优先级 | 依次递减 | | IR7 | 最低优先级 | 默认优先级最低 | > [!tip] 记忆口诀 > "一片 59A 八个脚,IR 零到 IR 七,管理八级中断源。" ### 2. 级联扩展 多片 82C59A 可以通过级联方式扩展中断管理能力: ```mermaid graph TB subgraph 单片 A1["IR0~IR7"] --> A2["8 级中断"] end subgraph 两级级联 B1["主片 IR0~IR7"] --> B2["从片 1~8"] B2 --> B3["每片从片 8 级"] B3 --> B4["最多 64 级"] end ``` | 配置 | 中断级数 | 说明 | |------|:--------:|------| | 单片 | **8 级** | IR0~IR7 全部直接使用 | | 一主一从 | 15 级 | 从片占用主片 1 个 IR(8+8-1=15) | | 两级级联(最多) | **64 级** | 主片 8 个 IR 各接一片从片,8×8=64 | > [!important] 考试关键点 > "两级级联最多可管理 **64 级**中断"——这是理论最大值(8×8=64),不是实际可用值。实际一主一从只有 15 级(因为主片要留一个 IR 给从片)。 > > > [!question] 思考题 > > 为什么理论最大是 64 级,而不是 8×7=56 级? > > > > 答:64 级是理想情况——主片 8 个 IR 各接一片从片(8×8=64),此时主片的所有 IR 都被从片占用,没有留给外部设备的中断引脚。如果主片还要留引脚给外部设备,则实际可用级数 = 8 + 外部引脚数×0 + 从片数×8,例如一主一从 = 7 + 8 = 15 级。 ### 3. 中断响应:两个 INTA 脉冲 当可屏蔽中断被响应时,CPU 发出两个 **INTA(中断应答)负脉冲**,82C59A 在第二个脉冲中向 CPU 提供中断源的**中断类型号(中断号)**: ```mermaid sequenceDiagram participant CPU as "CPU" participant PIC as "82C59A" participant IVT as "中断向量表" CPU->>PIC: "第一个 INTA 负脉冲" Note over PIC: "锁定最高优先级中断
ISR 对应位置 1
IRR 对应位清 0" PIC->>CPU: "无数据" CPU->>PIC: "第二个 INTA 负脉冲" PIC->>CPU: "中断类型号(8 位)" CPU->>IVT: "类型号 × 4 → 查向量表" IVT->>CPU: "CS:IP 中断服务入口" ``` > [!important] 两个 INTA 脉冲的区别 > > | 脉冲 | 82C59A 的操作 | CPU 获得的数据 | > |------|-------------|--------------| > | **第一个 INTA** | 锁定优先级、更新 ISR/IRR | 无 | > | **第二个 INTA** | 将中断类型号送上数据总线 | **中断类型号**(8 位) | ### 4. 中断号取值范围 8086 微机的中断系统为每个中断源分配一个**中断号(中断类型号)**,中断号为 8 位,取值范围为: $$00H \sim FFH \quad (0 \sim 255)$$ 共 **256** 个中断向量,每个向量占 4 字节(CS:IP),中断向量表位于内存最低端: | 项目 | 值 | |------|-----| | 中断号范围 | 00H ~ FFH(0 ~ 255) | | 向量表起始地址 | 00000H | | 向量表大小 | 256 × 4 = 1024 字节 = 1KB | | 向量表结束地址 | 003FFH | | 向量地址计算 | 中断号 × 4 | ```mermaid graph LR A["中断号 N"] --> B["N × 4"] B --> C["向量地址"] C --> D["00000H + N×4"] D --> E["4 字节: IP低 IP高 CS低 CS高"] ``` > [!example] 计算示例 > 中断号 08H 的向量地址 = 08H × 4 = **20H**,存放在 00020H~00023H 四个字节。 ### 5. 中断类型号分布 | 中断号范围 | 用途 | |----------|------| | 00H~07H | 内部中断(除法错误、单步等) | | 08H~0FH | 主 82C59A 管理的外部中断(IRQ0~IRQ7) | | 70H~77H | 从 82C59A 管理的外部中断(IRQ8~IRQ15) | | 10H~FFH | 软中断(INT n)及系统保留 | ### 6. 真题回顾 > [!example] 【真题】一片 82C59A 能管理\_\_\_\_\_\_级中断。 > > **答案**:8 > [!example] 【真题】一片 82C59A 能管理 8 级中断,若采用级联方式,两级级联最多可管理\_\_\_\_\_\_级中断。 > > **答案**:64 > [!example] 【真题】当可屏蔽中断被响应时,82C59A 在第二个中断响应负脉冲中,向 CPU 提供中断源的\_\_\_\_\_\_。 > > **答案**:中断类型号(中断号) > [!example] 【真题】8086 微机的中断系统为每个中断源分配一个中断号,中断号的取值范围是\_\_\_\_\_\_。 > > **答案**:00H~FFH(0~255) ## 关联笔记 - [[82C59A中断结束方式]] - [[IO端口编址方式]] - [[82C37A DMA控制器]] - [[接口与通讯技术/试题册/index|试题册索引]]