7章中断系统
① 0型中断——除法出错中断。 ② 1型中断——单步中断。 ③ 3型中断——断点中断(INT)。 ④ 4型中断——溢出中断(INTO指令)
(2)指令中断——INT n指令,其类型号就是 给定的n。
7.2.2 中断向量和中断向量表
IP 000 类型0中断入口(除法出错) CS
专 004 类型1中断入口(单步中断) IP
(2)CPU的标志寄存器入栈,以保护各个标志位, 此操作类似于PUSHF指令。
(3)清除IF和TF标志,屏蔽新的INTR中断和单步 中断
(4)保存断点,即把断点处的IP和CS值压入堆栈, 先压入CS值,再压入IP值。
(5)根据第一步计算出来的地址从中断向量表中 取出中断服务程序的入口地址(段和偏移),分 别送至CS和IP中。
3.若CPU处于开中断状态,则在当前指令 执行结束后,启动中断响应总线操作,发出 两个负脉冲作为响应信号。
4.8259A接收到第一个负脉冲,完成如下工作:
(1)使ISR相应位置1,表示CPU已为该中断请求服务。
(2)使IRR的相应位清0。
5.8259A接收到第二个负脉冲,将中断类型号送 上数据总线。中断类型号由用户编程和中断请求 引脚IRi的序号i共同决定(CPU读取中断类型号, 经响应过程后,进入中断服务程序,直到服务结 束返回)。
图5-1 中断处理过程
1.中断请求
中断请求是中断过程的第一步。中断源产生中断请求 的条件,因中断源而异
2.中断判优
由于中断产生的随机性,可能出现两个或两个以上的 中断源同时提出中断请求的情况。这时就必须要求 设计者事先根据中断源的轻重缓急,给每个中断源 确定一个中断级别——优先权。
3.中断响应
中断优先权确定后,发出中断申请的中断源中优先权 最高的中断请求就被送到CPU的中断请求引脚上。
19 IR1 18 IR0 17 INT
16 SP/EN 15 CAS2
图5-10 8259A引脚信号
7.3.2 8259A的工作过程
1.中断源通过IR0~IR7向8259A发中断请 求,使得8259A的中断请求寄存器IRR的相 应位置1。
2.IRR中经中断屏蔽寄存器IMR允许后的置 位位进入优先权判别器PR,PR将其中最高 优先权的中断请求从INT输出,送至CPU的 INTR端。
请求
中断返回
中断返回
低级 中断 服务 程序
高级 中断 服务 程序
图5-5 两级中断嵌套的示意图
实现多级中断需要注意的两个问题:
(1)实现多重中断的重要条件是在中断服务 执行过程中必须开放中断。
(2)必须加入屏蔽本级和较低级的中断请求 的环节,保证只有高级中断源才能中断低级的 中断处理。
7.2 8086 的中断结构
中断请求 中断判优 中断响应
中断处理 中断返回
中断源提出中断请求
判优逻辑进行优先排队
CPU执行完当前指令
中断请求信号有效?
是
CPU允许中断否?
是
CPU关闭中断
保护程序断点
CPU取下一条指令
否
否
找出中断源,形成中断服务程序 入口地址,并转向中断服务程序
保护现场 执行中断服务程序
恢复现场 CPU开放中断 返回原程序断点处
ISR
优先权 分析器
PR
中断请求
IR0
寄存器
IRR
IR7
中断屏蔽寄存器IMR
图5-9 8259A内部结构框图
2.8259A的引脚特性
CS 1
2 WR
3
RD 4
D7
5
D6 D5
6
D4
7
D3
8
D2
9
D1 10
D0 11
CAS0 12
CAS1 13
GND 14
28 VCC 27 A0
26 INTA 25 IR7 24 IR6 23 IR5 22 IR4 21 IR3 20 IR2
例7-1 用MOV指令写入中断向量。
假设中断向量号为60H,中断服务程序的段基址是SEG_INTR, 偏移地址是OFFSET_INTR,则填写中断向量表的程序段为:
┇
CLI
;关中断
CLD
;内存地址加1
MOV AX,0
MOV ES,AX
;给ES赋值为0
MOV DI,60H*4
;中断向量指针→DI
MOV AX,OFFSET_INTR ;中断服务程序偏移值→AX
入口地址,以便CPU将此地址置入 CS:IP寄存器 , 从而实现程序的转移
7.1.2 中断系统的功能
中断系统是指实现中断功能的软硬件的统称 1.正确识别中断请求,实现中断响应、中断处
理及中断返回 2.实现中断优先级排队 3.实现中断嵌套
7.1.3 中断处理过程
一个完整的中断处理过程包括中断请求、中断判 优、中断响应、中断处理和中断返回五个基本 阶段。
常见的中断源有
(1)故障中断,如电源掉电、内存奇偶错等; (2)软件中断,如CPU执行某些指令或操作引起的中
断等; (3)输入输出设备中断,如打印机、CRT、磁盘等; (4)实时时钟,如定时器提供的实时信号等。
3. 中断识别
即找出是哪一个中断源发出的中断请求 中断识别的目的是要形成该中断源的中断服务程序的
软件中断
硬件中断
图5-6 8086的中断源类型
1.外部中断
(1)非屏蔽中断NMI。用户不能用软件屏蔽的 中断。
(2)可屏蔽中断INTR。8086的INTR中断请求 信号来自中断控制器8259A,是电平触发方式, 高电平有效。
2.内部中断
(1)专用中断。在中断向量表中,类型号0~4 中除了类型号2的NMI非屏蔽中断外,其余均为 专用的软件中断,它们通常是由某个标志位引 起的中断。
在这种方式下,优先级顺序不是固定不变的, 一个设备得到中断服务后,其优先级自动降为最低。 其初始的优先级顺序规定为IR0,IR1,IR2,…, IR7
该方式用于系统中多个中断源优先级相等的场合
(2)优先级特殊循环方式。
这种方式与优先级自动循环方式惟一的区别是, 其初始的优先级不是固定IR0为最高,然后开始循环, 而是由程序指定IR0~IR7中任意一个为最高优先级, 然后再按顺序自动循环,决定优先级。
7.1中断的基本概念
7.1.1 中断与中断源
1.中断
在CPU正常运行程序时,由于内部事件、外部事件或 由程序预先安排的事件所引起的CPU暂时停止正在 运行的程序,而转去执行请求CPU服务的内部/外部 事件或预先安排事件的服务程序,待服务程序处理 完毕后又返回去继续执行被暂停的程序
2.中断源
发出中断请求的外部设备或引起中断的内部原因称为 中断源
可通过OCW3的D6D5=11来设定。
2.中断嵌套方式
(1)全嵌套方式。
在此种方式下,中断优先级按IR0~IR7顺序进 行排队,并且只允许中断级别高的中断源去中断级 别低的中断服务程序,但不能相反。这是8259A最 常用的方式。
在对8259A进行初始化以后,没有设置其他优 先级方式,则自动按此方式工作。
(2)特殊全嵌套方式。
与全嵌套方式基本相同,所不同的是在特殊全 嵌套方式下,当执行某一级中断服务程序时,可响 应同级的中断请求,从而实现对同级中断请求的特 殊嵌套(8259A级联使用时,某从片的8个中断源对 主片来说,可以认为是同级的)。
特殊全嵌套方式用于多片级联。
3.优先级控制方式
(1)优先级自动循环方式。
MOV AX,OFFSET_INTR
;中断服务程序偏移值→AX
MOV ES:[BX],AX ;装入偏移地址
MOV AX,SEG_INTR
;中断服务程序的段基址→AX
MOV ES:[BX+2],AX ;装入段基址
┇
7.2.4 8086的中断响应过程
1.内部中断响应过程
(1)将类型号乘4,计算出中断向量的地址;
1.软件查询判优
CPU D0~D7
并行 输入 接口
中断 请求 寄存器
IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7
INTR
≥1
图5-2 软件查询判优电路
断点保护
IRQ0? Y N Y
IRQ1? N
中断源0的中断服务程序 中断源1的中断服务程序
IRQ7?
Y
N
中断返回
中断源7的中断服务程序
IRET指令 的操作
图7-9 中断响应和中断处理流程
7.3可编程中断控制器8259A
7.3.1 8259A的内部结构和引脚特性
1.8259A的内部结构
INTA INT
D7~D0
数据 总线 缓冲器
控制逻辑
RD
WR A0 CS
CAS0 CAS1 CAS2 SP/EN
读/写 逻辑
数据 总线 缓冲器
中断服务 寄存器
1.中断屏蔽方式
(1)普通屏蔽方式。利用操作命令字OCW1,使 屏蔽寄存器IMR中的一位或数位置1来屏蔽一个或数 个中断源的中断请求。
若要开放某一个中断源的中断请求,则将 IMR中相应的位置0。
(2)特殊屏蔽方式。在某些场合,执行某一个中 断服务程序时,要求允许另一个优先级比它低的中 断请求被响应,此时可采用特殊屏蔽方式
(1)非屏蔽中断响应。 (2)可屏蔽中断响应。
CLK ALE LOCK INTA D7~D0
第一个总线
T1
T2
INTA 周期
T3
T4
第二个总线
T1
T2
INTA 周期T3 NhomakorabeaT4
中断 类型号
图7-8 8086对INTR的中断响应时序
取指令 执行指令