5.0 KiB
tags, create time
| tags | 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 可以通过级联方式扩展中断管理能力:
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 提供中断源的中断类型号(中断号):
sequenceDiagram
participant CPU as "CPU"
participant PIC as "82C59A"
participant IVT as "中断向量表"
CPU->>PIC: "第一个 INTA 负脉冲"
Note over PIC: "锁定最高优先级中断<br/>ISR 对应位置 1<br/>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 |
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(0255)