第 7章 中断技术
7.1 中断技术概述中断,是指 CPU在正常执行程序时,由于内部 /外部事件或程序的预先安排引起 CPU暂时终止执行现行程序,转而去执行请求 CPU为其服务的服务程序,待该服务程序执行完毕,
又能自动返回到被中断的程序继续执行 。
中断是现代微型计算机系统中广泛采用的一种资源共享技术,具有随机性。
7.1.1 中断源能引起中断的外部设备或内部原因称为中断源。
种类:
( 1)一般的输入 /输出设备;
( 2)实时时钟;
( 3)故障源;
( 4)软件中断。
7.1.2 中断技术的优点
( 1)同步操作 ;
( 2)实现实时处理 ;
( 3) 故障处理 。
7.1.3 中断系统的功能
( 1)能实现中断响应、中断服务和中断返回 ;
( 2)能实现中断优先权排队;
( 3)能实现中断嵌套现行程序断点中断服务程序图 7 - 1 中断响应、服务和返回
7.2 8086的中断结构
7.2.1 中断类型
8086采用矢量型的中断结构,共有 256个中断矢量号,又称中断类型号。中断源按与 CPU的相对位置关系分为外部中断和内部中断。
1,内部中断也称软件中断,是由处理器检测到异常情况或执行软件中断指令所引起的一种中断 。 内部中断又 可分为,( 1) 除法出错中断; ( 2)
INTO溢出中断; ( 3) INT n中断; ( 4) 断点中断; ( 5) 单步中断 。
内部中断的特点:
l 中断矢量号是由 CPU自动提供的,不需要执行中断响应总线周期去读取矢量号 。
l 除单步中断外,所有内部中断都无法禁止,
即都不能通过执行 CLI指令使 IF位清零来禁止对它们的响应 。
l 除单步中断外,任何内部中断的优先权都比外部中断高 。 8086CPU的中断优先权顺序为:
内部中断 ( 除法出错中断,INT n指令中断,
INTO 溢出中断,断点中断 ),NMI中断,
INTR中断和单步中断 。
2、外部中断也称硬件中断,是由 CPU的外部中断请求信号触发的一种中断,分为不可屏蔽中断 NMI
和可屏蔽中断 INTR。
( 1)不可屏蔽中断 NMI
它不受中断允许标志位 IF的影响,即使在关中断( IF=0)的情况下,CPU也能在当前指令执行完毕后就响应 NMI上的中断请求。
( 2)可屏蔽中断 INTR
CPU将根据中断允许标志位 IF的状态决定是否响应。如果 IF=0,CPU关中断,将拒绝响应;如果 IF=1,CPU开中断,允许响应。
7.2.2 中断优先权
1,识别中断源的方法
( 1)查询中断查询中断就是用软件查询的方法确定中断源。
( 2)矢量中断又称向量中断。当 CPU响应某个中断源的中断请求时,控制逻辑就将该中断源的矢量标志送入 CPU,CPU根据矢量标志自动指向相应的中断服务程序的入口地址,转入中断服务。 8086CPU就是以矢量中断的方法实现中断源识别的。
2,中断优先权的确定
( 1)用软件查询方法确定中断优先权采用软件查询中断方式时,中断优先权由查询顺序决定,先查询的中断源具有最高的优先权。
8086 CPU
INTR
M/IO RD
输入端口
EN
中断1 (自A 设备)
中断2 (自B 设备)
中断3 (自C 设备)
中断4 (自D 设备)
1≤
≥1
译码器输出Y i
D 7
D 6
D 5
D 4
图 7-2 软件查询方法的接口电路中断入口保护现场,读中断位状态是 A设备? 设备 A的中断服务程序是 B设备? 设备 B的中断服务程序是 C设备? 设备 C的中断服务程序
Y
Y
Y
N
N
错误出口
N
恢复现场、中断返回图 7-3 查询程序流程图优点,电路简单 。 软件查询的顺序就是中断优先权的顺序,不需要专门的优先权排队电路,可以直接修改软件查询顺序来修改中断优先权,
不必更改硬件 。
缺点,当中断源个数较多时,由逐位检测查询到转入相应的中断服务程序所耗费的时间较长,
中断响应速度慢,服务效率低 。
( 2)硬件优先权排队电路又称菊花环式优先权排队电路。它是利用外设连接在排队电路的物理位置来决定其中断优先权的,排在最前面的优先权最高,排在最后面的优先权最低。
三态缓冲器
&
E
N
三态缓冲器
&
E
N
三态缓冲器
&
E
N
三态缓冲器
&
E
N
数据总线
1
I N T A ( 来自C P U )
& A 2
& B 2
& C 2
&
A 1
B 1
C 1
Q 中断触发器
Q 中断触发器
2
Q 中断触发器
3
Q 中断触发器
n
1≤INTR
设备
1
设备设备设备图 7-4 链式优先权排队电路
7.2.3 中断管理
8086CPU可管理 256种中断。每种中断都指定一个中断矢量号,每一种中断矢量号都与一个中断服务程序相对应。中断服务程序的入口地址存放在内存储器的中断矢量表内。 中断矢量表是中断矢量号与它相应的中断服务程序的转换表。 8086以中断矢量为索引号,从中断矢量表中取得中断服务程序的入口地址。
∶
∶
∶
∶
除法中断入口单步中断入口
N M I 中断入口断点中断入口溢出中断入口类型 5 中断入口
IP
CS
0000H
0004H
0008H
000CH
0010H
0014H
类型 31H 中断入口类型 32H 中断入口
00C4H
00C8H
类型 0F F H 中断入口
03F CH
图 7 - 5 808 6 中断矢量表示 意图专用中断备用中断用户中断中断矢量表分为三部分:
( 1) 专用中断,类型 0~类型 4,共有 5种类型 。
专用中断的中断服务程序的入口地址由系统负责装入,用户不能随意修改 。
( 2)备用中断,类型 5~类型 3FH,这是 Intel公司为软、硬件开发保留的中断类型,一般不允许用户改作其他用途。
( 3)用户中断,类型 40H~类型 FFH,为用户可用中断,其中断服务程序的入口地址由用户程序负责装入。
7.3 微机系统的中断处理过程微机系统的中断处理过程如图 7-6所示,大致可分为中断请求,中断响应,中断处理和中断返回四个过程,这些步骤有的是通过硬件电路完成的,有的是由程序员编写程序来实现的 。
7.3.1 中断请求
CPU在每条指令执行结束后去查询有无中断请求信号。若查询到有中断请求,并且在允许响应中断的情况下,系统自动进入中断响应周期,
由硬件完成关中断、保存断点、取中断服务程序的入口地址等一系列操作,而后转向中断服务程序执行中断处理。
有无当前指令执行完毕有中断请求否?
关中断保护现场和断点开中断中断服务关中断恢复现场开中断取下一条指令返回图 7-6 微机系统的中断处理过程
7.3.2 中断响应
CPU接收到外设的中断请求信号时,若为非屏蔽中断请求,则 CPU执行完现行指令后,就立即响应中断。若为可屏蔽中断请求,能否响应中断,还取决于 CPU的中断允许触发器的状态。只有当其为,1”(即允许中断时),CPU才能响应可屏蔽中断:若其为,0”(即禁止中断时),即使有可屏蔽中断请求,CPU也不响应。
CPU要响应可屏蔽中断请求,必须满足以下三个条件,① 无总线请求; ② CPU允许中断;
③ CPU执行完现行指令 。
7.3.3 中断处理中断处理就是执行中断服务程序中规定的操作,主要包括:
( 1)保护现场,为了不破坏主程序中使用的寄存器的内容,必须用入栈指令 PUSH将有关寄存器的内容入栈保护。
( 2)开中断,为了实现中断嵌套,需要安排一条开中断指令,使系统处于开中断状态。
( 3)中断服务,CPU通过执行中断服务程序,完成对中断情况的处理。
7.3.4 中断返回中断返回是由中断服务程序中的中断返回指令 IRET来完成的。
中断返回时,要进行以下操作:
( 1) 关中断,使现场的恢复工作不被打扰 。
( 2) 恢复现场,在返回主程序之前要将用户保护的寄存器内容从堆栈中弹出,以便能正确执行主程序 。 恢复现场用 POP指令,要注意弹出时的顺序与入栈的顺序正好相反 。
( 3)开中断,使 CPU能继续接收中断请求。
7.4 可编程中断控制器 8259A及其应用
8259A可编程中断控制器的主要功能为:
l具有 8级中断优先权控制,通过级联方式可扩展到 64级中断优先权控制;
l 每一级中断都可以屏蔽或允许;
l在中断响应周期,8259A可提供相应的中断类型码;
l 8259A有多种中断管理方式,可通过编程来进行选择 。
7.4.1 8259A的内部结构及引脚数据总线缓冲器读/ 写逻辑级连缓冲/ 比较器中断服务寄存器
(I S R )
中断请求寄存器
(IRR)
优先权电路
IR 7
IR 0
IR 1
IR 2
IR 3
IR 4
IR 5
IR 6
中断屏蔽寄存器(I M R )
D 7 -D 0
控 制 逻 辑
CAS 0
CAS 1
CAS 2
SP/EN
RD
WR
CS
A 0
内部总线
INTA
INT
7.4.2 8259A的中断管理方式
1、中断优先权管理
( 1)一般完全嵌套方式
( 2)自动循环方式
( 3)中断屏蔽方式
◆ 普通屏蔽方式
◆ 特殊屏蔽方式
( 4)特殊完全嵌套方式
2、中断结束的管理
( 1)一般完全嵌套情况
◆ 一般 EOI方式
◆ 指定 EOI方式
◆ 自动 EOI方式
( 2)自动循环方式
◆ 不指定的 EOI方式
◆ 指定 EOI方式
◆ 自动 EOI方式
( 3)特殊完全嵌套情况
3、连接系统总线的方式
( 1)缓冲方式在多片 8259A级联的大系统中,8259A通过总线驱动器与系统数据总线相连,这就是缓冲方式。
( 2)非缓冲方式当系统中只有单片 8259A时,一般要将它直接与数据总线相连;在一些不太大的系统中,即使有几片 8259A工作在级联方式,只要片数不多,
也可以将 8259A直接于数据总线相连。
4,8259A的中断响应过程
7.4.3 8259A的编程
8259A的编程包括两类:一类是初始化编程,
由初始化命令字 ICW1~ICW4对 8259A进行 初始设置;另一类是操作方式编程,用来 规定 8259A的工作方式,由操作命令字 OCW1~OCW3设置。
1、初始化编程在 8259A开始工作之前,必须用初始化命令字建立 8259A操作的初始状态,它们必须按照一定的顺序输入,如图 7-10所示。
Y
Y
N
I CW 1 ( A
0
=0,D
4
=1 )
I CW 1 ( A
0
=0,D
4
=1 )
I CW 3 ( A
0
=1 )
需要 I CW 4 吗?
单片 8259A?
I CW 4 ( A
0
=1 )
N
图 7 - 1 0 8 2 5 9 A 初始化流程图
( 1) ICWl— 芯片控制初始化命令字
( 2) ICW2— 中断类型码初始化命令字
( 3) ICW3— 主 /从片初始化命令字
( 4) ICW4— 方式控制初始化命令
2、操作控制字的编程
( 1) OCW1— 中断屏蔽操作命令字
( 2) OCW2— 控制中断结束和优先权循环的操作命令字
( 3) OCW3— 中断屏蔽、查询和读寄存器状态操作命令字
3,8259A编程举例
THANK YOU VERY
MUCH
本章到此结束,
谢谢您的光临!
7.1 中断技术概述中断,是指 CPU在正常执行程序时,由于内部 /外部事件或程序的预先安排引起 CPU暂时终止执行现行程序,转而去执行请求 CPU为其服务的服务程序,待该服务程序执行完毕,
又能自动返回到被中断的程序继续执行 。
中断是现代微型计算机系统中广泛采用的一种资源共享技术,具有随机性。
7.1.1 中断源能引起中断的外部设备或内部原因称为中断源。
种类:
( 1)一般的输入 /输出设备;
( 2)实时时钟;
( 3)故障源;
( 4)软件中断。
7.1.2 中断技术的优点
( 1)同步操作 ;
( 2)实现实时处理 ;
( 3) 故障处理 。
7.1.3 中断系统的功能
( 1)能实现中断响应、中断服务和中断返回 ;
( 2)能实现中断优先权排队;
( 3)能实现中断嵌套现行程序断点中断服务程序图 7 - 1 中断响应、服务和返回
7.2 8086的中断结构
7.2.1 中断类型
8086采用矢量型的中断结构,共有 256个中断矢量号,又称中断类型号。中断源按与 CPU的相对位置关系分为外部中断和内部中断。
1,内部中断也称软件中断,是由处理器检测到异常情况或执行软件中断指令所引起的一种中断 。 内部中断又 可分为,( 1) 除法出错中断; ( 2)
INTO溢出中断; ( 3) INT n中断; ( 4) 断点中断; ( 5) 单步中断 。
内部中断的特点:
l 中断矢量号是由 CPU自动提供的,不需要执行中断响应总线周期去读取矢量号 。
l 除单步中断外,所有内部中断都无法禁止,
即都不能通过执行 CLI指令使 IF位清零来禁止对它们的响应 。
l 除单步中断外,任何内部中断的优先权都比外部中断高 。 8086CPU的中断优先权顺序为:
内部中断 ( 除法出错中断,INT n指令中断,
INTO 溢出中断,断点中断 ),NMI中断,
INTR中断和单步中断 。
2、外部中断也称硬件中断,是由 CPU的外部中断请求信号触发的一种中断,分为不可屏蔽中断 NMI
和可屏蔽中断 INTR。
( 1)不可屏蔽中断 NMI
它不受中断允许标志位 IF的影响,即使在关中断( IF=0)的情况下,CPU也能在当前指令执行完毕后就响应 NMI上的中断请求。
( 2)可屏蔽中断 INTR
CPU将根据中断允许标志位 IF的状态决定是否响应。如果 IF=0,CPU关中断,将拒绝响应;如果 IF=1,CPU开中断,允许响应。
7.2.2 中断优先权
1,识别中断源的方法
( 1)查询中断查询中断就是用软件查询的方法确定中断源。
( 2)矢量中断又称向量中断。当 CPU响应某个中断源的中断请求时,控制逻辑就将该中断源的矢量标志送入 CPU,CPU根据矢量标志自动指向相应的中断服务程序的入口地址,转入中断服务。 8086CPU就是以矢量中断的方法实现中断源识别的。
2,中断优先权的确定
( 1)用软件查询方法确定中断优先权采用软件查询中断方式时,中断优先权由查询顺序决定,先查询的中断源具有最高的优先权。
8086 CPU
INTR
M/IO RD
输入端口
EN
中断1 (自A 设备)
中断2 (自B 设备)
中断3 (自C 设备)
中断4 (自D 设备)
1≤
≥1
译码器输出Y i
D 7
D 6
D 5
D 4
图 7-2 软件查询方法的接口电路中断入口保护现场,读中断位状态是 A设备? 设备 A的中断服务程序是 B设备? 设备 B的中断服务程序是 C设备? 设备 C的中断服务程序
Y
Y
Y
N
N
错误出口
N
恢复现场、中断返回图 7-3 查询程序流程图优点,电路简单 。 软件查询的顺序就是中断优先权的顺序,不需要专门的优先权排队电路,可以直接修改软件查询顺序来修改中断优先权,
不必更改硬件 。
缺点,当中断源个数较多时,由逐位检测查询到转入相应的中断服务程序所耗费的时间较长,
中断响应速度慢,服务效率低 。
( 2)硬件优先权排队电路又称菊花环式优先权排队电路。它是利用外设连接在排队电路的物理位置来决定其中断优先权的,排在最前面的优先权最高,排在最后面的优先权最低。
三态缓冲器
&
E
N
三态缓冲器
&
E
N
三态缓冲器
&
E
N
三态缓冲器
&
E
N
数据总线
1
I N T A ( 来自C P U )
& A 2
& B 2
& C 2
&
A 1
B 1
C 1
Q 中断触发器
Q 中断触发器
2
Q 中断触发器
3
Q 中断触发器
n
1≤INTR
设备
1
设备设备设备图 7-4 链式优先权排队电路
7.2.3 中断管理
8086CPU可管理 256种中断。每种中断都指定一个中断矢量号,每一种中断矢量号都与一个中断服务程序相对应。中断服务程序的入口地址存放在内存储器的中断矢量表内。 中断矢量表是中断矢量号与它相应的中断服务程序的转换表。 8086以中断矢量为索引号,从中断矢量表中取得中断服务程序的入口地址。
∶
∶
∶
∶
除法中断入口单步中断入口
N M I 中断入口断点中断入口溢出中断入口类型 5 中断入口
IP
CS
0000H
0004H
0008H
000CH
0010H
0014H
类型 31H 中断入口类型 32H 中断入口
00C4H
00C8H
类型 0F F H 中断入口
03F CH
图 7 - 5 808 6 中断矢量表示 意图专用中断备用中断用户中断中断矢量表分为三部分:
( 1) 专用中断,类型 0~类型 4,共有 5种类型 。
专用中断的中断服务程序的入口地址由系统负责装入,用户不能随意修改 。
( 2)备用中断,类型 5~类型 3FH,这是 Intel公司为软、硬件开发保留的中断类型,一般不允许用户改作其他用途。
( 3)用户中断,类型 40H~类型 FFH,为用户可用中断,其中断服务程序的入口地址由用户程序负责装入。
7.3 微机系统的中断处理过程微机系统的中断处理过程如图 7-6所示,大致可分为中断请求,中断响应,中断处理和中断返回四个过程,这些步骤有的是通过硬件电路完成的,有的是由程序员编写程序来实现的 。
7.3.1 中断请求
CPU在每条指令执行结束后去查询有无中断请求信号。若查询到有中断请求,并且在允许响应中断的情况下,系统自动进入中断响应周期,
由硬件完成关中断、保存断点、取中断服务程序的入口地址等一系列操作,而后转向中断服务程序执行中断处理。
有无当前指令执行完毕有中断请求否?
关中断保护现场和断点开中断中断服务关中断恢复现场开中断取下一条指令返回图 7-6 微机系统的中断处理过程
7.3.2 中断响应
CPU接收到外设的中断请求信号时,若为非屏蔽中断请求,则 CPU执行完现行指令后,就立即响应中断。若为可屏蔽中断请求,能否响应中断,还取决于 CPU的中断允许触发器的状态。只有当其为,1”(即允许中断时),CPU才能响应可屏蔽中断:若其为,0”(即禁止中断时),即使有可屏蔽中断请求,CPU也不响应。
CPU要响应可屏蔽中断请求,必须满足以下三个条件,① 无总线请求; ② CPU允许中断;
③ CPU执行完现行指令 。
7.3.3 中断处理中断处理就是执行中断服务程序中规定的操作,主要包括:
( 1)保护现场,为了不破坏主程序中使用的寄存器的内容,必须用入栈指令 PUSH将有关寄存器的内容入栈保护。
( 2)开中断,为了实现中断嵌套,需要安排一条开中断指令,使系统处于开中断状态。
( 3)中断服务,CPU通过执行中断服务程序,完成对中断情况的处理。
7.3.4 中断返回中断返回是由中断服务程序中的中断返回指令 IRET来完成的。
中断返回时,要进行以下操作:
( 1) 关中断,使现场的恢复工作不被打扰 。
( 2) 恢复现场,在返回主程序之前要将用户保护的寄存器内容从堆栈中弹出,以便能正确执行主程序 。 恢复现场用 POP指令,要注意弹出时的顺序与入栈的顺序正好相反 。
( 3)开中断,使 CPU能继续接收中断请求。
7.4 可编程中断控制器 8259A及其应用
8259A可编程中断控制器的主要功能为:
l具有 8级中断优先权控制,通过级联方式可扩展到 64级中断优先权控制;
l 每一级中断都可以屏蔽或允许;
l在中断响应周期,8259A可提供相应的中断类型码;
l 8259A有多种中断管理方式,可通过编程来进行选择 。
7.4.1 8259A的内部结构及引脚数据总线缓冲器读/ 写逻辑级连缓冲/ 比较器中断服务寄存器
(I S R )
中断请求寄存器
(IRR)
优先权电路
IR 7
IR 0
IR 1
IR 2
IR 3
IR 4
IR 5
IR 6
中断屏蔽寄存器(I M R )
D 7 -D 0
控 制 逻 辑
CAS 0
CAS 1
CAS 2
SP/EN
RD
WR
CS
A 0
内部总线
INTA
INT
7.4.2 8259A的中断管理方式
1、中断优先权管理
( 1)一般完全嵌套方式
( 2)自动循环方式
( 3)中断屏蔽方式
◆ 普通屏蔽方式
◆ 特殊屏蔽方式
( 4)特殊完全嵌套方式
2、中断结束的管理
( 1)一般完全嵌套情况
◆ 一般 EOI方式
◆ 指定 EOI方式
◆ 自动 EOI方式
( 2)自动循环方式
◆ 不指定的 EOI方式
◆ 指定 EOI方式
◆ 自动 EOI方式
( 3)特殊完全嵌套情况
3、连接系统总线的方式
( 1)缓冲方式在多片 8259A级联的大系统中,8259A通过总线驱动器与系统数据总线相连,这就是缓冲方式。
( 2)非缓冲方式当系统中只有单片 8259A时,一般要将它直接与数据总线相连;在一些不太大的系统中,即使有几片 8259A工作在级联方式,只要片数不多,
也可以将 8259A直接于数据总线相连。
4,8259A的中断响应过程
7.4.3 8259A的编程
8259A的编程包括两类:一类是初始化编程,
由初始化命令字 ICW1~ICW4对 8259A进行 初始设置;另一类是操作方式编程,用来 规定 8259A的工作方式,由操作命令字 OCW1~OCW3设置。
1、初始化编程在 8259A开始工作之前,必须用初始化命令字建立 8259A操作的初始状态,它们必须按照一定的顺序输入,如图 7-10所示。
Y
Y
N
I CW 1 ( A
0
=0,D
4
=1 )
I CW 1 ( A
0
=0,D
4
=1 )
I CW 3 ( A
0
=1 )
需要 I CW 4 吗?
单片 8259A?
I CW 4 ( A
0
=1 )
N
图 7 - 1 0 8 2 5 9 A 初始化流程图
( 1) ICWl— 芯片控制初始化命令字
( 2) ICW2— 中断类型码初始化命令字
( 3) ICW3— 主 /从片初始化命令字
( 4) ICW4— 方式控制初始化命令
2、操作控制字的编程
( 1) OCW1— 中断屏蔽操作命令字
( 2) OCW2— 控制中断结束和优先权循环的操作命令字
( 3) OCW3— 中断屏蔽、查询和读寄存器状态操作命令字
3,8259A编程举例
THANK YOU VERY
MUCH
本章到此结束,
谢谢您的光临!