第九章 中断
? 概述
? 中断原理
? 中断系统组成及其功能
? 中断响应过程
? 8086中断系统
? 8086CPU的中断管理
? 可编程中断管理芯片 8259A
概述
当 CPU用查询的方式与外设交换信息时,
CPU就要浪费很多时间去等待外设。这样
就引出一个快速的 CPU与慢速的外设之间
数据传送的矛盾,这也是计算机在发展
过程中遇到的严重问题之一。为解决这
个问题,一方面要提高外设的工作速度,
另一方面发展了中断慨念。中断系统是
计算机的重要指标之一。
9,1 中断原理
一、从无条件传送、条件传送到中断传送
条件传送最大的缺点就是为了 CPU和外设在
时间上配合正确,CPU花大量的时间用无条件
方式对状态线进行查询,从而降低了整个系统
的工作效率。
具有中断功能的 CPU中,有一个硬件部件专
门用于检测外设的状态线。
检测状态信号
状态信号有效?
外设处理
外设处理检测状态信号
主
程
序
二、中断概念
在中断传送方式下,外设应有请求 CPU
服务的权利,当外部设备准备好向 CPU传送
数据,或者外设已准备就绪接收 CPU的数据,
或者有某些紧急情况要求处理,或者是定时
时间到等等。这时,外设向 CPU发出中断请
求,CPU接收到请求并在一定条件下,暂时
停止执行原来的程序而转去中断处理,处理
好中断服务再返回来执行原来程序,这就是
一个中断概念。
处理文档
电话铃响
暂停文档
文档中作暂停记号
电话交谈
找出暂停记号位置
继续处理文档
执行主程序 ( 日常事务程序 )
中断申请信号有效 ( 中断请求 )
暂停执行主程序响应中断
当前 PC 及寄存器入栈 ( 保护现场 )
处理外设要求 ( 中断服务 )
寄存器及 PC 出栈 ( 恢复现场及中断返回 )
继续执行主程序
三、中断应用
1、实时故障处理
存储器出错检测电路
存储器
奇偶检测电路
奇偶
位
中断请求信号
2、分时操作,同时处理
有了中断功能,CPU可命令多个外
设同时工作。虽然 CPU在不同的时间
点上为不同的任务工作,但宏观上
看 CPU几乎同时为不同的任务工作,
极大地发挥了 CPU高速性的特点。
9,2 中断系统组成及其功能
一,三个与中断有关的触发器
1、中断请求触发器
有两个特点:
( 1)它的输出可以作为中断请求信号,在满足一
定条件的情况下把信号发送给 CPU,并在 CPU未响
应时一直保存下去;
( 2)、当 CPU满足一定条件下响应了该中断请求
信号,执行了相关的操作后,该中断请求信号可
以被撤除。 D Q
R D
状态线
中断请求
外设读、写操作
CLK
+5V
2、中断屏蔽触发器
中断屏蔽触发器的功能就是决定
中断请求触发器的输出信号是否可
以作为中断请求信号发送给 CPU,这
样 CPU通过对中断屏蔽触发器的设置
就可以达到对中断源的控制。
3,CPU内部的中断允许触发器。
CPU通过对它进行设置来决定是否对发给它的中
断请求信号进行响应。
有些 CPU,比如 8086CPU,设置了两种中断类型
可屏蔽中断和不可屏蔽中断。可屏蔽中断受中断
允许触发器控制,只有当 IF为 1时,CPU才能响应
中断请求信号。而不可屏蔽中断不受中断允许触
发器的控制,只要中断请求信号有效,不管 IF是
否为 1,CPU就必须响应。因此不可屏蔽中断的中
断优先级要大于可屏蔽中断的中断优先级 。
二,再谈中断条件
外设的中断请求信号要想发给 CPU并能最
终得到 CPU的响应,必须要满足如下两个条
件:一个是中断屏蔽触发器处于非屏蔽状态。
在这种情况下,中断请求信号才能发给 CPU。
但 CPU是否相应这个中断,还要看中断允许
触发器是否处于开中断状态。只有 CPU是开
中断的条件下,CPU才能进入中断响应过程,
处理中断事务。这就是第二个条件。
9,3 中断响应过程
中断过程主要包括三个方面:
? 外设发中断请求信号给 CPU即中断请求;
?CPU对中断请求信号所作出反应即中断响应;
?CPU执行对外设操作的子程序即中断处理。
一、中断申请
当中断屏蔽触发器状态为 1,则中断请
求触发器输出的中断请求信号发给 CPU。
二、中断响应
CPU响应可屏蔽中断申请必须满足 3个条件,
① 无总线请求;
② CPU被允许中断;
③ CPU执行完现行指令,
三、中断处理
CPU响应中断后要自动完成三项任务
1,关闭中断;
2,CS,IP以及 FR的内容推入堆栈
3、中断服务程序段地址送入 CS中,
偏移地址送入 IP中。
一旦 CPU响应中断,就可转入中断服务程
序之中。中断服务程序的结构如下:
push ax ;保护现场
……
push bx
sti ;开中断
…… ;中断处理
cli ;关中断
pop bx ;恢复现场
……
pop ax
sti ;开中断
reti ;中断返回
四、中断源识别及中断优先权
在中断系统中一个非常关键的问题是
CPU如何知道是哪一个中断源发出的中断
申请信号 。 只有正确地确定中断源, CPU
才能转到相应的中断服务程序为之服务 。
这里, 确定中断源的方法被称为中断源
识别或中断方式 。
1,中断源识别
包括两个方面:
其一, 确定中断源,
其二, 找到该中断服务程序的首地址 。
下面我们给出解决问题的两种方案 。
( 1)查询中断
IN AL,IPORT ;从输入接口取中断信息
TEST AL,80H ;是 0号设备请求吗?
JNZ SEVO ;是, 转 0号设备服务程序
TEST AL,40H ;否, 是 1号设备请求吗?
JNZ SEVl ;是, 转 1号设备服务程序
TEST AL,20H ;否, 是 2号设备请求吗?
JNZ SEV2 ;是, 转 2号设备服务程序
TEST AL,10H ;否, 是 3号设备请求吗?
JNZ SEV3 ;是, 转 3号设备服务程序
( 2)矢量中断
中断申请信号和中断
响应信号是一对握手信号 。
在驱动一个中断事件过程
中, 中断请求信号是外设
发给 CPU的, 当其有效时,
表示外设请求 CPU为之服务 。
而中断响应信号是 CPU发给
外设的, 当其有效时, 表
明 CPU可以为这个外设服务,
同时要求外设提供中断类
型号 。
矢量中断
7
4
L
S
2
4
5
D Q
CLK
R D
A7
A6
A5
A4
A3
A2
A1
A0
+5V
中断申请
接CPU的 D
7
~D
0
INTA
INTR
2,中断优先权
( 1)软件方案
软件查询确定优先权的缺点是,响应中断慢。
( 2)、硬件方案
?链形电路
这种方法是利用外设在系统中的
物理位置来决定其中断优先权的
?编码电路
74LSl48是一个 8到 3线的优先权
编码器,它是一个 16个管脚双列直
插式 TTL器件.
7
4
L
S
2
4
5
D Q
CLK
R D
A7
A6
A5
A4
A3
A2
A1
A0
T
CS
B7
B6
B5
B4
B3
B2
B1
B0
+5V
接CPU 的D
7
~D
0
INTA
INTR
7
4
L
S
1
4
8
I 7
I 6
I 5
I 4
I 3
I 2
I 1
I 0
A 2
A 1
A 0
INT 7
INT 6
INT 5
INT 4
INT 3
INT 2
INT 1
INT 0
9,4 8086中断系统
一,8086的中断源
8086中断系统有两大类型的中断源,一类
是由外部设备产生的中断,我们称之为硬件中
断,硬件中断有时又称外中断。另一类是由指
令在某种运行结果时产生的中断,我们称之为
软件中断。另外对于硬件中断,又分为不可屏
蔽中断和可屏蔽中断,硬件中断是通过 CPU芯
片的 INTR管脚或 NMI管脚从外部引入的。
中断类型号和中断服务子程序的入口地址之
间的关系:
中断类
型号n
×4
0000:4n+0
0000:4n+1
0000:4n+2
0000:4n+3
00
10
00
20
1000
2000
IP
CS
内存
二、不可屏蔽中断
所谓不可屏蔽中断就是用户不能通过
CPU内的中断允许触发器 IF控制的中断,
由 8086CPU的 NMI管脚引入 。 NMI中断请求
采用上升沿触发方式, 这种中断一旦产
生, 在 CPU内部直接生成中断类型号 02。
0000:4*2+0
0000:4*2+1
0000:4*2+2
0000:4*2+3
00
10
00
20
1000
2000
IP
CS
内存IF= 0
IP,CS,FR进 栈
IP=[2*4+0]
CS=[2*4+2]
三,可屏蔽中断
可屏蔽中断就是用户可以控制的中断,
其途径是通过对 CPU内的中断允许触发器
IF的设置来禁止和允许 CPU响应中断 。 可
屏蔽中断由 8086CPU的 INTR管脚引入 。 这
种中断请求需要设备提供中断类型号,
CPU响应中断后, 取中断类型号的 4倍作
为中断服务入口地址表的地址, 通过查
表得到相应的中断服务程序首地址, 转
去执行相应的中断服务程序 。
0000:4*n+0
0000:4*n+1
0000:4*n+2
0000:4*n+3
00
10
00
20
1000
2000
内存IF= 0
IP,CS,FR进 栈
IP=[2*n+0]
CS=[2*n+2]
取中断类型号n
四,8086中断系统
1、软件中断
软件中断是由中断指令引起的 。 中
断指令的指令格式为 INT n,操作数 n
就是中断类型号 。 当 CPU执行完毕中断
指令 INT n后, 就会立即产生一个中断
类型号为 n的中断 。
(1)除法中断
当进行除法运算时,若除数为 0或
除数太小,使得商数大于相应寄存器
所能表示的最大值,被称作除法出错。
这时除法指令就相当于一个中断源,
它向 CPU发出类型 0中断。
(2) 溢出中断
当算术运算产生溢出时,将在 INTO指令控制下向
CPU发出类型 4的中断,即溢出中断。
(3)单步中断和断点中断
? 单步中断
当 8086CPU的标志寄存器中的 TF标志为 1时,
8086CPU处于单步工作方式,这时 CPU在每条指令
执行后自动产生类型 l的中断。
? 断点中断
INT3指令是 1字节指令, 可将这条指令的目
的代码嵌入任意条指令的操作码处, 从而实现断
点中断 。
五、中断概念的再讨论
1、中断与调子程序之间的关系
(1)中断过程实际上是 CPU从执行当前主程序转到执行为外设
服务的子程序,因此从这个角度来看,中断过程是一个调
用子程序的过程。
(2)中断过程与子程序调用还是有很大差别的,首先调用子
程序的过程是一个无条件过程,但中断过程的中断服务程
序的调用一般是有条件的。其次,子程序调用在整个程序
执行中的位置是固定的。但对于硬件中断过程,只要条件
满足,在整个程序执行的任意一时间点都有可能发生从主
程序向中断服务子程序的转移事件,也就是说硬件中断产
生的调用过程是随机的,不可预测的。
2、外部中断和 INT n 之间的关系
结合中断指令 INT n,我们可以这样理
解外部中断:当外部中断源发中断给 CPU时,
如果 CPU满足一定的条件, 处于开中断状态,
CPU就可以响应中断, 这时外设在 CPU正在执
行指令与其下一个指令之间, 等效, 插入,
了一个 INT n指令, 这里的 n就是外设提供的
中断类型号 。 注意这里用, 等效, 两字表示
实际过程中是不存在插入 INT n指令的操作,
但 CPU确实完成了类似 INT n指令的功能, 实
现了主程序向中断程序的转移 。
9,5 8086CPU的中断管理
一,8086CPU的中断处理顺序
8086CPU的中断优先权排列从高到低为:
? 1,除法出错中断, 溢出中断, INT n;
?2,NMl;
?3,INTR;
?4,单步中断 。
二,8086CPU的中
断服务入口地
址表
三,中断入口地址设置
1,用串指令
CLI ;关中断
MOV AX,0
MOV ES,AX ;置附件段基地址为 0
MOV DI,n*4 ;置附件段偏移地址到 DI
MOV AX,OFFSET INT_VCE ;置中断程序首地址的偏移量到 AX
CLD
STOSW ;填偏移量到中断地址表
MOV AX,SEG INT_VCE ;置中断程序的段基地址到 AX
STOSW ;填段基地址到中断地址表
STI ;开中断
……
2、用伪指令
INT- TBLSEGMENT AT 0 ;定义 INT- TBL段, 段基地址为 0
ORG n*4 ;指定偏移地址
DD INT— VCE ;存中断程序入口地址
INT- TBL ENDS
…… ;其他处理
MCODE SEGMENT ;主程序
…… ;其他处理
INT— VCE PROC FAR ;中断服务程序
……
IRET
INT— VCE ENDP
……
3、用系统调用
使用 DOS功能调用的 25H功能
要求:
AL=中断类型号
DS,DX=中断服务程序首地址的段, 偏移地
址
PUSH DS
MOV DX,SEG INT60H ;段基地址送 DS
MOV DS,DX
MOV DX,OFFSET INT60H ;偏移地址送 DX
MOV AL,60H ;中断类型号送 AL
MOV AH,25H
INT 21H ; 25H功能调用
POP DS
4、直接装入法
若外设的中断类型号为 6BH,则此中断类型
号对应的中断矢量表地址为从 00lACH开始的
四个存储单元.设中断服务程序段地址是
1000H,偏移地址为 2000H。
MOV AX,,0
MOV DS,AX ;置数据段段基地址为 0
MOV AX,2000H
MOV WORD PTR [01ACH],AX;对偏移地址为 01AC的单元
MOV AX,1000H ;送双字
MOV WORD PTR [01ACH+2l,AX
9,6 可编程中断管理芯片 8259A
一,8259A的内部结构
二,8259A的中断管理方式
1、中断优先权管理
( 1)完全嵌套方式
8259A的中断请求输入端引入的中断具
有固定的优先权排队顺序,IR0为最高优
先级,IR1为次高优先级,依次类推,IR7
为最低优先级。
( 2)自动循环方式
从 IR0— IR7引入的中断轮流具有最高优
先权。
( 3)中断屏蔽方式
有两种方法:第一、普通屏蔽方式。
第二,采用特殊屏蔽方式。
( 4) 特殊完全嵌套方式
用在 8259A有级联的情况
2,8259A中断结束的管理方式
( 1)完全嵌套情况
可采用三种中断结束方式,一般 EOI方
式, 特殊 EOI方式, 自动 EOI方式 。 最常
用的为一般 EOI方式 。
( 2) 自动循环情况
也可采用三种中断结束方式,一般 EOI
方式, 特殊 EOI方式, 自动 EOI方式 。
三,IBM-PC机硬件中断
1,中断设置
在 PC/XT机中, 有一片 8259A中断控制
芯片, 可管理 8个中断源 。 在 PC/AT机中
有两片 8259A中断控制芯片, 可管理 15个
中断源 。
主片, IR0,IR1
从片,IR0,IR1,IR2,IR3,IR4,IR4,IR5,IR6,IR7
主片,IR3,IR4,IR5,IR5,IR7
2,PC机中断资源的使用
( 1)对中断屏蔽寄存器的操作
主片 8259A中断屏蔽寄存器的 I/ O端口地
址是 21H,它的 8位对应控制 8个外部设备,
通过设置这个寄存器的某位为 0或为 1来允许
或禁止某外部设备的中断 。 某位为 0表示允
许某种外设中断请求, 某位为 1表示某种外
没的中断请求被屏蔽 (禁止 )。
从片 8259A中断屏蔽寄存器的 I/ O端口
地址是 A1H
例, 只允许键盘中断, 可设置如下中断屏蔽字:
MOV AL,11111101B
OUT 21H,AL
如果系统重新增设键盘中断, 则可用下列指令实
现:
IN AL,21H
AND AL,11111101B
OUT 21H,AL
(2)、中断结束命令
在一次中断处理结束之前,还应给 8259A可编程
中断控制器的中断命令寄存器发出中断结束命令
EOI,可采用一般的 EOI方式,中断命令寄存器的 I
/ O端口地址为 20H,结束外中断用下面的指令:
MOV AL,20H
OUT 20H,AL
同样, 如果中断是从片 8259A的中断输入线产生
的, 则要同时对主片和从片的中断命令寄存器发
EOI命令 。 从片 8259A中断命令寄存器的 I/ O端口地
址是 A0H
四, 中断传送方式的设计过程
1,硬件方面
设定硬件的中断类型号
2,软件方面
? 关中断
? 填写中断入口地址表
? 设置 8259A及其他编程芯片
? 开中断
? 编写中断服务子程序
? 概述
? 中断原理
? 中断系统组成及其功能
? 中断响应过程
? 8086中断系统
? 8086CPU的中断管理
? 可编程中断管理芯片 8259A
概述
当 CPU用查询的方式与外设交换信息时,
CPU就要浪费很多时间去等待外设。这样
就引出一个快速的 CPU与慢速的外设之间
数据传送的矛盾,这也是计算机在发展
过程中遇到的严重问题之一。为解决这
个问题,一方面要提高外设的工作速度,
另一方面发展了中断慨念。中断系统是
计算机的重要指标之一。
9,1 中断原理
一、从无条件传送、条件传送到中断传送
条件传送最大的缺点就是为了 CPU和外设在
时间上配合正确,CPU花大量的时间用无条件
方式对状态线进行查询,从而降低了整个系统
的工作效率。
具有中断功能的 CPU中,有一个硬件部件专
门用于检测外设的状态线。
检测状态信号
状态信号有效?
外设处理
外设处理检测状态信号
主
程
序
二、中断概念
在中断传送方式下,外设应有请求 CPU
服务的权利,当外部设备准备好向 CPU传送
数据,或者外设已准备就绪接收 CPU的数据,
或者有某些紧急情况要求处理,或者是定时
时间到等等。这时,外设向 CPU发出中断请
求,CPU接收到请求并在一定条件下,暂时
停止执行原来的程序而转去中断处理,处理
好中断服务再返回来执行原来程序,这就是
一个中断概念。
处理文档
电话铃响
暂停文档
文档中作暂停记号
电话交谈
找出暂停记号位置
继续处理文档
执行主程序 ( 日常事务程序 )
中断申请信号有效 ( 中断请求 )
暂停执行主程序响应中断
当前 PC 及寄存器入栈 ( 保护现场 )
处理外设要求 ( 中断服务 )
寄存器及 PC 出栈 ( 恢复现场及中断返回 )
继续执行主程序
三、中断应用
1、实时故障处理
存储器出错检测电路
存储器
奇偶检测电路
奇偶
位
中断请求信号
2、分时操作,同时处理
有了中断功能,CPU可命令多个外
设同时工作。虽然 CPU在不同的时间
点上为不同的任务工作,但宏观上
看 CPU几乎同时为不同的任务工作,
极大地发挥了 CPU高速性的特点。
9,2 中断系统组成及其功能
一,三个与中断有关的触发器
1、中断请求触发器
有两个特点:
( 1)它的输出可以作为中断请求信号,在满足一
定条件的情况下把信号发送给 CPU,并在 CPU未响
应时一直保存下去;
( 2)、当 CPU满足一定条件下响应了该中断请求
信号,执行了相关的操作后,该中断请求信号可
以被撤除。 D Q
R D
状态线
中断请求
外设读、写操作
CLK
+5V
2、中断屏蔽触发器
中断屏蔽触发器的功能就是决定
中断请求触发器的输出信号是否可
以作为中断请求信号发送给 CPU,这
样 CPU通过对中断屏蔽触发器的设置
就可以达到对中断源的控制。
3,CPU内部的中断允许触发器。
CPU通过对它进行设置来决定是否对发给它的中
断请求信号进行响应。
有些 CPU,比如 8086CPU,设置了两种中断类型
可屏蔽中断和不可屏蔽中断。可屏蔽中断受中断
允许触发器控制,只有当 IF为 1时,CPU才能响应
中断请求信号。而不可屏蔽中断不受中断允许触
发器的控制,只要中断请求信号有效,不管 IF是
否为 1,CPU就必须响应。因此不可屏蔽中断的中
断优先级要大于可屏蔽中断的中断优先级 。
二,再谈中断条件
外设的中断请求信号要想发给 CPU并能最
终得到 CPU的响应,必须要满足如下两个条
件:一个是中断屏蔽触发器处于非屏蔽状态。
在这种情况下,中断请求信号才能发给 CPU。
但 CPU是否相应这个中断,还要看中断允许
触发器是否处于开中断状态。只有 CPU是开
中断的条件下,CPU才能进入中断响应过程,
处理中断事务。这就是第二个条件。
9,3 中断响应过程
中断过程主要包括三个方面:
? 外设发中断请求信号给 CPU即中断请求;
?CPU对中断请求信号所作出反应即中断响应;
?CPU执行对外设操作的子程序即中断处理。
一、中断申请
当中断屏蔽触发器状态为 1,则中断请
求触发器输出的中断请求信号发给 CPU。
二、中断响应
CPU响应可屏蔽中断申请必须满足 3个条件,
① 无总线请求;
② CPU被允许中断;
③ CPU执行完现行指令,
三、中断处理
CPU响应中断后要自动完成三项任务
1,关闭中断;
2,CS,IP以及 FR的内容推入堆栈
3、中断服务程序段地址送入 CS中,
偏移地址送入 IP中。
一旦 CPU响应中断,就可转入中断服务程
序之中。中断服务程序的结构如下:
push ax ;保护现场
……
push bx
sti ;开中断
…… ;中断处理
cli ;关中断
pop bx ;恢复现场
……
pop ax
sti ;开中断
reti ;中断返回
四、中断源识别及中断优先权
在中断系统中一个非常关键的问题是
CPU如何知道是哪一个中断源发出的中断
申请信号 。 只有正确地确定中断源, CPU
才能转到相应的中断服务程序为之服务 。
这里, 确定中断源的方法被称为中断源
识别或中断方式 。
1,中断源识别
包括两个方面:
其一, 确定中断源,
其二, 找到该中断服务程序的首地址 。
下面我们给出解决问题的两种方案 。
( 1)查询中断
IN AL,IPORT ;从输入接口取中断信息
TEST AL,80H ;是 0号设备请求吗?
JNZ SEVO ;是, 转 0号设备服务程序
TEST AL,40H ;否, 是 1号设备请求吗?
JNZ SEVl ;是, 转 1号设备服务程序
TEST AL,20H ;否, 是 2号设备请求吗?
JNZ SEV2 ;是, 转 2号设备服务程序
TEST AL,10H ;否, 是 3号设备请求吗?
JNZ SEV3 ;是, 转 3号设备服务程序
( 2)矢量中断
中断申请信号和中断
响应信号是一对握手信号 。
在驱动一个中断事件过程
中, 中断请求信号是外设
发给 CPU的, 当其有效时,
表示外设请求 CPU为之服务 。
而中断响应信号是 CPU发给
外设的, 当其有效时, 表
明 CPU可以为这个外设服务,
同时要求外设提供中断类
型号 。
矢量中断
7
4
L
S
2
4
5
D Q
CLK
R D
A7
A6
A5
A4
A3
A2
A1
A0
+5V
中断申请
接CPU的 D
7
~D
0
INTA
INTR
2,中断优先权
( 1)软件方案
软件查询确定优先权的缺点是,响应中断慢。
( 2)、硬件方案
?链形电路
这种方法是利用外设在系统中的
物理位置来决定其中断优先权的
?编码电路
74LSl48是一个 8到 3线的优先权
编码器,它是一个 16个管脚双列直
插式 TTL器件.
7
4
L
S
2
4
5
D Q
CLK
R D
A7
A6
A5
A4
A3
A2
A1
A0
T
CS
B7
B6
B5
B4
B3
B2
B1
B0
+5V
接CPU 的D
7
~D
0
INTA
INTR
7
4
L
S
1
4
8
I 7
I 6
I 5
I 4
I 3
I 2
I 1
I 0
A 2
A 1
A 0
INT 7
INT 6
INT 5
INT 4
INT 3
INT 2
INT 1
INT 0
9,4 8086中断系统
一,8086的中断源
8086中断系统有两大类型的中断源,一类
是由外部设备产生的中断,我们称之为硬件中
断,硬件中断有时又称外中断。另一类是由指
令在某种运行结果时产生的中断,我们称之为
软件中断。另外对于硬件中断,又分为不可屏
蔽中断和可屏蔽中断,硬件中断是通过 CPU芯
片的 INTR管脚或 NMI管脚从外部引入的。
中断类型号和中断服务子程序的入口地址之
间的关系:
中断类
型号n
×4
0000:4n+0
0000:4n+1
0000:4n+2
0000:4n+3
00
10
00
20
1000
2000
IP
CS
内存
二、不可屏蔽中断
所谓不可屏蔽中断就是用户不能通过
CPU内的中断允许触发器 IF控制的中断,
由 8086CPU的 NMI管脚引入 。 NMI中断请求
采用上升沿触发方式, 这种中断一旦产
生, 在 CPU内部直接生成中断类型号 02。
0000:4*2+0
0000:4*2+1
0000:4*2+2
0000:4*2+3
00
10
00
20
1000
2000
IP
CS
内存IF= 0
IP,CS,FR进 栈
IP=[2*4+0]
CS=[2*4+2]
三,可屏蔽中断
可屏蔽中断就是用户可以控制的中断,
其途径是通过对 CPU内的中断允许触发器
IF的设置来禁止和允许 CPU响应中断 。 可
屏蔽中断由 8086CPU的 INTR管脚引入 。 这
种中断请求需要设备提供中断类型号,
CPU响应中断后, 取中断类型号的 4倍作
为中断服务入口地址表的地址, 通过查
表得到相应的中断服务程序首地址, 转
去执行相应的中断服务程序 。
0000:4*n+0
0000:4*n+1
0000:4*n+2
0000:4*n+3
00
10
00
20
1000
2000
内存IF= 0
IP,CS,FR进 栈
IP=[2*n+0]
CS=[2*n+2]
取中断类型号n
四,8086中断系统
1、软件中断
软件中断是由中断指令引起的 。 中
断指令的指令格式为 INT n,操作数 n
就是中断类型号 。 当 CPU执行完毕中断
指令 INT n后, 就会立即产生一个中断
类型号为 n的中断 。
(1)除法中断
当进行除法运算时,若除数为 0或
除数太小,使得商数大于相应寄存器
所能表示的最大值,被称作除法出错。
这时除法指令就相当于一个中断源,
它向 CPU发出类型 0中断。
(2) 溢出中断
当算术运算产生溢出时,将在 INTO指令控制下向
CPU发出类型 4的中断,即溢出中断。
(3)单步中断和断点中断
? 单步中断
当 8086CPU的标志寄存器中的 TF标志为 1时,
8086CPU处于单步工作方式,这时 CPU在每条指令
执行后自动产生类型 l的中断。
? 断点中断
INT3指令是 1字节指令, 可将这条指令的目
的代码嵌入任意条指令的操作码处, 从而实现断
点中断 。
五、中断概念的再讨论
1、中断与调子程序之间的关系
(1)中断过程实际上是 CPU从执行当前主程序转到执行为外设
服务的子程序,因此从这个角度来看,中断过程是一个调
用子程序的过程。
(2)中断过程与子程序调用还是有很大差别的,首先调用子
程序的过程是一个无条件过程,但中断过程的中断服务程
序的调用一般是有条件的。其次,子程序调用在整个程序
执行中的位置是固定的。但对于硬件中断过程,只要条件
满足,在整个程序执行的任意一时间点都有可能发生从主
程序向中断服务子程序的转移事件,也就是说硬件中断产
生的调用过程是随机的,不可预测的。
2、外部中断和 INT n 之间的关系
结合中断指令 INT n,我们可以这样理
解外部中断:当外部中断源发中断给 CPU时,
如果 CPU满足一定的条件, 处于开中断状态,
CPU就可以响应中断, 这时外设在 CPU正在执
行指令与其下一个指令之间, 等效, 插入,
了一个 INT n指令, 这里的 n就是外设提供的
中断类型号 。 注意这里用, 等效, 两字表示
实际过程中是不存在插入 INT n指令的操作,
但 CPU确实完成了类似 INT n指令的功能, 实
现了主程序向中断程序的转移 。
9,5 8086CPU的中断管理
一,8086CPU的中断处理顺序
8086CPU的中断优先权排列从高到低为:
? 1,除法出错中断, 溢出中断, INT n;
?2,NMl;
?3,INTR;
?4,单步中断 。
二,8086CPU的中
断服务入口地
址表
三,中断入口地址设置
1,用串指令
CLI ;关中断
MOV AX,0
MOV ES,AX ;置附件段基地址为 0
MOV DI,n*4 ;置附件段偏移地址到 DI
MOV AX,OFFSET INT_VCE ;置中断程序首地址的偏移量到 AX
CLD
STOSW ;填偏移量到中断地址表
MOV AX,SEG INT_VCE ;置中断程序的段基地址到 AX
STOSW ;填段基地址到中断地址表
STI ;开中断
……
2、用伪指令
INT- TBLSEGMENT AT 0 ;定义 INT- TBL段, 段基地址为 0
ORG n*4 ;指定偏移地址
DD INT— VCE ;存中断程序入口地址
INT- TBL ENDS
…… ;其他处理
MCODE SEGMENT ;主程序
…… ;其他处理
INT— VCE PROC FAR ;中断服务程序
……
IRET
INT— VCE ENDP
……
3、用系统调用
使用 DOS功能调用的 25H功能
要求:
AL=中断类型号
DS,DX=中断服务程序首地址的段, 偏移地
址
PUSH DS
MOV DX,SEG INT60H ;段基地址送 DS
MOV DS,DX
MOV DX,OFFSET INT60H ;偏移地址送 DX
MOV AL,60H ;中断类型号送 AL
MOV AH,25H
INT 21H ; 25H功能调用
POP DS
4、直接装入法
若外设的中断类型号为 6BH,则此中断类型
号对应的中断矢量表地址为从 00lACH开始的
四个存储单元.设中断服务程序段地址是
1000H,偏移地址为 2000H。
MOV AX,,0
MOV DS,AX ;置数据段段基地址为 0
MOV AX,2000H
MOV WORD PTR [01ACH],AX;对偏移地址为 01AC的单元
MOV AX,1000H ;送双字
MOV WORD PTR [01ACH+2l,AX
9,6 可编程中断管理芯片 8259A
一,8259A的内部结构
二,8259A的中断管理方式
1、中断优先权管理
( 1)完全嵌套方式
8259A的中断请求输入端引入的中断具
有固定的优先权排队顺序,IR0为最高优
先级,IR1为次高优先级,依次类推,IR7
为最低优先级。
( 2)自动循环方式
从 IR0— IR7引入的中断轮流具有最高优
先权。
( 3)中断屏蔽方式
有两种方法:第一、普通屏蔽方式。
第二,采用特殊屏蔽方式。
( 4) 特殊完全嵌套方式
用在 8259A有级联的情况
2,8259A中断结束的管理方式
( 1)完全嵌套情况
可采用三种中断结束方式,一般 EOI方
式, 特殊 EOI方式, 自动 EOI方式 。 最常
用的为一般 EOI方式 。
( 2) 自动循环情况
也可采用三种中断结束方式,一般 EOI
方式, 特殊 EOI方式, 自动 EOI方式 。
三,IBM-PC机硬件中断
1,中断设置
在 PC/XT机中, 有一片 8259A中断控制
芯片, 可管理 8个中断源 。 在 PC/AT机中
有两片 8259A中断控制芯片, 可管理 15个
中断源 。
主片, IR0,IR1
从片,IR0,IR1,IR2,IR3,IR4,IR4,IR5,IR6,IR7
主片,IR3,IR4,IR5,IR5,IR7
2,PC机中断资源的使用
( 1)对中断屏蔽寄存器的操作
主片 8259A中断屏蔽寄存器的 I/ O端口地
址是 21H,它的 8位对应控制 8个外部设备,
通过设置这个寄存器的某位为 0或为 1来允许
或禁止某外部设备的中断 。 某位为 0表示允
许某种外设中断请求, 某位为 1表示某种外
没的中断请求被屏蔽 (禁止 )。
从片 8259A中断屏蔽寄存器的 I/ O端口
地址是 A1H
例, 只允许键盘中断, 可设置如下中断屏蔽字:
MOV AL,11111101B
OUT 21H,AL
如果系统重新增设键盘中断, 则可用下列指令实
现:
IN AL,21H
AND AL,11111101B
OUT 21H,AL
(2)、中断结束命令
在一次中断处理结束之前,还应给 8259A可编程
中断控制器的中断命令寄存器发出中断结束命令
EOI,可采用一般的 EOI方式,中断命令寄存器的 I
/ O端口地址为 20H,结束外中断用下面的指令:
MOV AL,20H
OUT 20H,AL
同样, 如果中断是从片 8259A的中断输入线产生
的, 则要同时对主片和从片的中断命令寄存器发
EOI命令 。 从片 8259A中断命令寄存器的 I/ O端口地
址是 A0H
四, 中断传送方式的设计过程
1,硬件方面
设定硬件的中断类型号
2,软件方面
? 关中断
? 填写中断入口地址表
? 设置 8259A及其他编程芯片
? 开中断
? 编写中断服务子程序