微机原理及应用
主讲:谢维成
http://xweicheng.ys168.com
scxweicheng@yahoo.com.cn
第8章 中断
8.1 引言
第7章中当CP U与外设交换信息时 , 若 用 查 询 方
式 , 则 CPU就要 浪费 很多 时间去等待外设,这就存
在 一 个 快 速 的 CPU与 慢速 的外设之间的矛盾,这也
是计算机在发展过程中遇到的严重问题之一。
中断的出现是为了解决高速C PU与慢速外 设 之
间的矛盾而引出的一个概念。
8.1.1 中断的概念及为什么要用中断技术
中断 是指C PU暂时中止它正在执行的主程序,转
去执行请求中断的那个外设的中断服务程序,处理
完毕后,又返回主程序的过程。
子程序的调用是固定的,而中断是随机的。
1、同步操作
可以使C PU与外设同时工作,C PU启动启动外设后
继续执行主程序。
2、实现实时处理
3、故障处理
8.1.2 中断源
中断源: 引起中断的原因或能发出中断申请的来源 。
1、一般的输入输入输出设备(如键盘、打印机等)
2、数据通道中断源(如磁盘、磁带机)
3、实时时钟(外部电路如8253)
4、故障源 ( 如掉电,需保存信息)
5、调试程序时设置的中断源(如断点、单步)
8.2 最简单的中断情况
8.2.1 CPU响应中断的条件
1、设置中断请求出触发器;
2、设置中断屏蔽触发器;
3、中断是开放的;
4、现行指令执行结束;
8.2.2 CPU对中断的响应
8.2.2 CPU对中断的响应
满足以上四个条件后,C PU响应中断,转入中断
周期,CPU完成如下操作 (P267-268)
1、关中断;
2、保留断点;
3、保护现场;
4、给出中断入口,转入相应中断服务程序;
5、恢复现场;
6、开中断与返回;
8.3 中断优先权
8.3.1 用软件确定中断优先权
例: 把8个外设的中断请求组合起来,作为一个端口,
将各个外设请求信号 “或 ”后,作为 INTR信号,如下图示:
≥1
INTR
(CPU)
I/O
D
0
D
1
至CPU数据
总线
INTR
0
INTR
1
INTR
7
D
7
软件优先权排队 端口控制
8.3.1 用软件确定中断优先权
D
7
D
0
20H
磁
盘
纸
带
输
入
纸
带
穿
孔
打
印
机
输
出
CRT
显
示
电
源
故
障
磁
带
键
盘
输
入
8.3.1 用软件确定中断优先权
判优: 一 个 外 设 有 中 断 请 求 ,都可向 CPU发INTR, CPU响应
后把中断寄存器的状态读入C PU,设该状态为1,表示该位 有 中
断 申 请 ,通 过 软 件 查询,查到那位为1,转到相应中断服务程序。
程序段如下:
1、屏蔽法(P269)
IN AL,20H
TEST AL,80H ;D7有请求?
JNZ II1 ;有,转对应中断服务程序
TEST AL,40H ;D6有请求?
JNZ II2 ;有,转对应中断服务程序
┇
先查谁,谁的优先权高
8.3.1 用软件确定中断优先权
2、移位法(P269)
XOR AL,AL
IN AL,20H
RCL AL,1
JC PWS
RCL AL,1
JC DISK
┇
先移位到C标志的优先权高
8.3.2 用硬件确定中断优先权
编码器和比较器硬件组成的优先权排队电路
…
1
≥
INTR
0
INTR
7
}
优先
权编
码组
中断
输入
…
&
1
图8-7 编码器和比较器硬件组成的优先权排队电路
&
2
A>B
比较器
A
2
A
1
A
0
B
2
B
1
B
0
优先权失效信号
1
≥
去 CPU
INTR
CPU数据总线优先
权寄
存器
8.4 中断控制器Intel 8259A
略(自学,后续课程的重点内容)
8.5 8086微处理器的中断方式
8086/8088有两类中断:
硬件中断 ― 由外设的请求引起,又叫 外中断
软件中断 ― 由执行指令所引起,又叫 内中断
中断系统:
为实现中断功能而设置的各种 硬件 和软 件, 统
称为中断系统。
8.5.1 外部中断
8086/8088有两条外部中断请求线 NMI(非 屏 蔽
中断)和INTR(可屏蔽中断)
1、INTR(可屏蔽中断)
2、NMI(非屏蔽中断)
8.5.1 外部中断(中断)
出现在INTR上的请求信号是 电平 触发的,在CPU未响
应前,此信号应保持有效。当外设的中断请求未被屏蔽,
且IF=1,则CPU在当前指令周期的最后一个T状态去采样
INTR线,若有效,CPU予以响应,时序如下:( 参见P175
图5-12)
图5-12 中断响应周期时序
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
CLK
ALE
INTA
第一个中断响应周期 第二个中断响应周期
AD
7
~AD
0
向量类型
8.5.1 外部中断(中断)
在第一个中断响应周期,CPU输出中断响应信号INTA。 在第一
个机器周期 ,CPU使AD
15
-AD
0
浮空, 在第二个机器周期 ,被响应的
外设(或接口芯片)应向数据总线输送一个字节的中断向量号,
CPU读入中断向量号后,就可以在中断向量表上找到该设备服务
程序的入口地址,转入中断服务( 参见P175 图5-12)
图5-12 中断响应周期时序
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
第一个中断响应周期 第二个中断响应周期
CLK
ALE
INTA
AD
7
~AD
0
向量类型
8.5.2 内部中断
8086可以有几种产生内部中断的情况
1、DIV/IDIV
2、INT指令
3、INTO指令
4、单步执行
8086规定这些中断优 先权为:内部中断、N MI、
INTR、单步执行(T)
8.5.3 中断向量表
地址
内容
0000H
}
}
}
}
}
类型 1(IP)
类型 2(IP)
类型 3(IP)
类型 4(IP)
类型 5(IP)
类型 0(CS)
类型 1(CS)
类型 2(CS)
类型 3(CS)
类型 4(CS)
类型 5(CS)
…
0的
类型 1的
中断向量
类型 2的
中断向量
类型 3的
中断向量
类型 4的
中断向量
(除法错 )
(单步 )
(非屏蔽中断 )
(断点 )
(溢出中断 INTO)
}
类型
中断向量
类型 0(IP)
0004H
0008H
000CH
0010H
0014H
4*N
}
类型
中断向量
N的
类型 N(IP)
类型 N(CS)
…
图8-22 中断向量表
Summary
? Question and Problem ?