8088中断系统采用向量中断机制
可屏蔽中断需要8259A实现优先权管理
类型
- 内部中断:异常
- 触发错中断
- 指令中断
INT N - 溢出中断
INTO - 单步中断 TF
- 外部中断:中断
- NMI 向量号为2
- INT:IF
IF 为 0 不响应可屏蔽中断
中断响应过程
中断源优先权指被识别出来的先后
- 软件中断
- NMI
- INTR
- TF=1
- 中断请求寄存器IRR
- 8条外界中断请求信号IR0-7请求状态
- Di为1表示IRi有请求
- 中断服务寄存器ISR
- 保存被8259A服务的中断状态
- Di为1表示IRi中断正在服务
- 中断屏蔽寄存器IMR
- 保存对中断请求信号IR的屏蔽状态
- Di为1表示IRi中断被屏蔽
- 8259A开始工作前,必须进行初始化编程:
- 给8259A写入初始化命令字ICW
mov al,11h ;写入ICW1
out 20h,al
jmp intr1
intr1: mov al,08h ;写入ICW2
out 21h,al
jmp intr2
intr2: mov al,04h ;写入ICW3
out 21h,al
jmp intr3
intr3: mov al,1h ;写入ICW4
out 21h,al- 8259A工作期间
- 写入操作命令字OCW将选定的操作传送给8259A
- 可以读取8259A信息
- 8259A工作前写入
- ICW1和ICW2必须送
- ICW3和ICW4由工作方式决定
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|
| X | X | X | 1 | LTIM | X | SNGL | IC4 |
| 建议为0 | 作为标志 | 中断触发方式 | 单片或级联方式 | 是否写入ICW4 |
中断触发方式
- 边沿触发
- 电平触发
SNGL:
- 级联
- 单片
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|
| T7 | T6 | T5 | T4 | T3 | X | X | X |
设置中断向量号
- T7~T3为中断向量号的高5位
- 低3位由8259A自动确定
- IR0为000、 IR1为001、……、IR7为111
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|
| S7 | S6 | S5 | S4 | S3 | S2/ID2 | S1/ID1 | S0/ID0 |
级联命令字
- 主片8259A:$S_i=1$对应$IR_i$有从片
- 从片8259A:ID0~ID2编码说明从片INT引脚接到主片的IR引脚
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | SFNM | BUF | M/S | AEOI | $\mu$PM |
| 嵌套方式 特殊(1)/普通(0)全嵌套 |
缓冲方式:缓冲(1) | M/S* | AutoEOI |
$\mu$PM:微处理器类型
- 8位8080/8085
- 16位80x86
普通全嵌套:
- 8259A的中断优先权顺序固定不变
- 中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其向量号送上数据总线,对应ISR的Di位置位,至到中断结束(ISR的Di位复位)
- 在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套
没有写入顺序
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|
| M7 | M6 | M5 | M4 | M3 | M2 | M1 | M0 |
屏蔽命令字 Di=Mi对应IRi
为1禁止IRi中断
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|
| R | SL | EOI | 0 | 0 | L2 | L1 | L0 |
| 产生中断 | 结束EOI命令 | 和改变优先权顺序 | 指定 | IR | 引脚 |
R SL EOI 为一组
L2~0为一组
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|
| 0 | ESMN | SMM | 0 | 1 | P | RR | RIS |
| 设置中断 | 屏蔽方式 | 规定随后读取 | 状态字 | 含义 |
ESMN SMM一组
P RR RIS一组
CPU可读取IRR ISR IMR和查询字
-
$A_0$ 为低 OCW3中RR和RIS设定读取IRR或ISR P设定为读取查询字 -
$A_0$ 为高 读取都是IMR
查询字反应8259A是否有中断请求
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|
| I | W2 | W1 | W0 | ||||
| 是否有外设请求中断 | 当前中断请求 | 的 | 最高优先级 |

