第十讲 8086 8088 CPU 中断
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在每条指令的最后一个时钟周期,CPU检测 INTR或NMI信号。若以下条件成立,则CPU 响应中断:
• 当前指令执行完。
对INTR,还应满足以下条件 , • 当前指令是STI和IRET,则下条指令也要执行完。 和 。 • 当前指令带有LOCK、REP等指令前缀时,则把它们看成一 、
个整体,要求完整地执行完;
——中断优先级排队问题。
中断优先级控制要处理两种情况:
• 对同时产生的中断:应首先处理优先级别较高的 中断;若优先级别相同,则按先来先服务的原则 处理; • 对非同时产生的中断:低优先级别的中断处理程 序允许被高优先级别的中断源所中断——即允许 中断嵌套。
10
中断判优
中断优先级的控制方法
• 硬件判优 硬件判优——链式判优、并行判优(中断向量法) 链式判优、 链式判优 并行判优(中断向量法) • 软件判优——顺序查询中断请求,先查询的先服 顺序查询中断请求, 软件判优 顺序查询中断请求 即先查询的优先级别高) 务(即先查询的优先级别高)
• 外部中断
非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它。 可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。
中断优先权从高到低的顺序是:除法溢出中断 中断优先权从高到低的顺序是:除法溢出中断→INT n →INTO →NMI →INTR →单步中断 单步中断
20
8086/8088中断源类型 中断源类型
IREQ
外设3 外设3 外设接口3 外设接口3
IREQ 中断确认 INTAin 菊花链 逻辑电路
INTA
INTAin
INTAin
INTR
≥1
┇
14
菊花链逻辑电路
外设接口
三态门 中 断 向 量 码
DB
E
中断确认 菊花链 逻辑电路
IREQ
&
=1 ≥1 INTAin
INTR 15
INTAout
3)中断响应
23
中断向量和中断向量表
中断响应后, 通过中断类型号找到中断向量表, 中断响应后,CPU通过中断类型号找到中断向量表,进而找 通过中断类型号找到中断向量表 到中断服务程序。 到中断服务程序。 中断向量 • 存放各类中断的中断服务程序的入口地址(段和偏移) 它提供一个指向中断处理子程序的起始地址。 它提供一个指向中断处理子程序的起始地址。 中断向量表 :将所有的中断处理服务程序的入口地址都集中 在一起,构成一个中断地址的存放表,即中断向量表。 在一起,构成一个中断地址的存放表,即中断向量表。 位于内存的00000H~003FFH,大小为1KB,共256个 中断向量,每个中断向量占用4 Bytes,低字为段内偏移, 高字为段基址。
• 溢出、断点、除法溢出、单步、非屏蔽中断的 类型码为固定值 固定值 • 软件中断的类型码由指令给出 由指令给出 • 可屏蔽中断的类型码由PIC给出 由 给出
22
中断源的识别
CPU响应INTR中断时,会产生两个中断响应总 线周期,要求PIC在第2个中断响应总线周期把 中断类型码放到数据总线上,供CPU读入。
00004 H
向量 地址: 地址: 4AH*4=128H
00008 H
F000:1806 : 中断处理 服务程序 IRET
28
003FF H
中断向量表的初始化
初始化——将中断服务程序的入口地址放入 向量表 (1)直接写入法。
• 使用指令将中断服务程序入口地址的IP写入n×4 的RAM位置,中断服务程序入口的CS写入 n×4+2的位置。
中断请求信号应保持到中断被处理为止; CPU响应中断后,中断请求信号应及时撤销。
• 在8086/8088系统中,外设的中断要经过8259A可编程 中断控制器(PIC)的排队判优后向CPU发出:
(I/O接口 n→ PIC → CPU 接口) 接口
1
8
2.1)中断源识别
计算机中的中断源有很多,CPU必须识别是 哪一个设备产生中断。识别中断源有两个方 法:
中断源
中断源分为:外部中断、内部中断
5
中断源
8086/8088的外部中断信号:INTR、NMI
• INTR——可屏蔽中断请求,高电平有效,受IF标 可屏蔽中断请求,高电平有效, 可屏蔽中断请求 标 志的控制。 志的控制。 • NMI——非屏蔽中断请求,上升沿有效,任何时 非屏蔽中断请求, 非屏蔽中断请求 上升沿有效, 都要响应此中断请求信号。 候CPU都要响应此中断请求信号。 都要响应此中断请求信号
3
为何要引入中断?
提高数据传输率; 避免了CPU不断检测外设状态的过程,提 高了CPU的利用率。 实现对特殊事件的实时响应。如多任务系统 操作系统中:
• • • • 缺页中断 设备中断 各类异常 实时钟,。。。等
4
引起CPU中断的事件——中断源。
• 外设——请求输入输出数据,报告故障等 外设 请求输入输出数据, 请求输入输出数据 • 事件——掉电、硬件故障、软件错误、非法操作、 掉电、硬件故障、软件错误、非法操作、 事件 掉电 定时时间到等
中断返回后
CS FLAG
19
SP
8086/8088的中断系统
与中断有关的控制线为:NMI、INTR、INTA 8086系统的中断源(256个)
• 内部中断
软件中断:即INT n指令,类型号n(0-255)。 • 除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。 • 单步中断:类型号1,TF=1时产生(当前指令需执行完) • 断点中断:类型号3,这是一个软件中断,即INT 3指令。 • 溢出中断:类型号4,这是一个软件中断,即INTO指令。
18
5)中断返回
执行中断返回指令IRET
• IRET指令将使CPU把堆栈内保存的断点信息弹 出到IP、CS和FLAG中,保证被中断的程序从断 点处能够继续往下执行。
SP IPL IPH CSL CSH FLAGL FLAGH IPL IPH CSL CSH FLAGL FLAGH IP
进入中断服 务程序时
26
例
例:设某中断源的类型码为4AH,试画出求 设某中断源的类型码为 , 中断服务处理程序的示意图。 中断服务处理程序的示意图。 中断向量表指针为4*n=4*4AH=128H, 解: 中断向量表指针为 , 即:0000:0128H。 : 。 通过中断向量表, 通过中断向量表,中断服务程序的入口 地址为0F000H:1806H。 地址为 : 。
27
例
中断向量表
物理地址 00000 H 00001 H 单元内容 类型 0 中断处理 程序 入口地址 类型 1 中断处理 程序 入口地址 ………… ………… ………… ………… 类型 FFH 中断处理 程序 入口地址 INT MOV 4AH AL,30 , 地址 0:124 : 0:125 : 0:126 : 0:127 : 0:128 : 0:129 : 0: : 12A 0: : 12B 0: : 12C 0: : 12D 0:12E : 0:12F : 单元内容 类型 49 H 中断 向量 06 H 18 H 00 H F0 H 类型 4B H 中断 向量 I P=1806H CS=F000H
12
A1: A2: INTS01: INTS02:
硬件优先权排队电路
13
硬件优先权排队-----链式判优电路原理图 链式判优电路原理图 硬件优先权排队
外设1 外设1 CPU 外设接口1 外设接口1
IREQ 中断确认 菊花链 逻辑电路 中断确认 菊花链 逻辑电路
外设2 外设2 外设接口2 外设接口2
软件中断指令 n 溢出中断 断点中断 除法错 4 3 中断逻辑 2 NMI 非屏蔽中断请求
0 1 INTR
单步中断 8086/8088CPU内部逻辑 8086/8088CPU内部逻辑 CPU
中断控 制器 8259A PIC
可 屏 蔽 中 断 请 求
Biblioteka Baidu
21
中断源的识别
8086系统采用中断类型码来识别不同的中断 源,每个中断源都有一个与它相对应的中断 类型码 。
6
中断过程
五个步骤:
• • • • • 中断请求 中断判优(有时还要进行中断源识别) 中断响应 中断服务 中断返回
7
1)中断请求
外设接口(中断源)发出中断请求信号,送到CPU 的INTR或NMI引脚;
• 中断请求信号:边沿请求,电平请求 中断请求信号:边沿请求, 例如, 为边沿请求, 例如,NMI为边沿请求,INTR为电平请求 为边沿请求 为电平请求
• 软件查询。将中断信号从数据总线读入,用程序 软件查询。将中断信号从数据总线读入, 进行判别。 进行判别。 • 中断矢量法。由中断源提供中断类型号,CPU根 中断矢量法。由中断源提供中断类型号, 根 据类型确定中断源。( 。(8086/8088) 据类型确定中断源。( )
9
2.2)中断判优
多个中断源产生中断,CPU首先为谁服务?
29
例
例 若中断类型号n=70H,中断服务程序的 过程名是INTSUB。借助伪指令和传送指令, 将中断服务程序入口地址写入中断向量表。
VECDATA SEGMENT AT 0 ORG 70H*4 LOCA_70 DW 2 DUP (?) VECDATA ENDS ININT SEGMENT …… MOV LOCA_70, OFFSET INTSUB MOV LOCA_70+2, SEG INTSUB
24
根据中断类型号获得中断服务程序入口
方法: 中断向量在IVT中的存放地 中断向量在 中的存放地 址=4×n ×
25
中断类型和中断向量表
8086中断处理流程 中断处理流程
在获得中断类型号后, 入栈, 清零。 ① CPU在获得中断类型号后,先自动将 入栈,并自动将 和TF清零。 在获得中断类型号后 先自动将FR入栈 并自动将IF和 清零 自动将当前CS和 内容入栈 根据中断类型号n从中断向量表中取出中断 内容入栈, ② 自动将当前 和IP内容入栈,根据中断类型号 从中断向量表中取出中断 处理程序的段地址送入CS,偏移地址值送入IP, 处理程序的段地址送入CS,偏移地址值送入IP,从而实现向中断处理程序转 移。 在中断处理程序完成后,用中断返回指令IRET恢复断点,弹回 和CS, 恢复断点, ③ 在中断处理程序完成后,用中断返回指令 恢复断点 弹回IP和 , 并恢复FR的内容,实现向被中断程序的返回。 并恢复 的内容,实现向被中断程序的返回。 的内容
如何得到中断处理程序的首地址? 固定入口法 中断向量法——常用
17
4)中断处理(中断服务)
中断服务子程序特点
• 为”远”过程(类型为FAR) • 要用IRET指令返回
中断服务子程序要做的工作
• • • • • 保护现场(PUSH reg’s) 开中断(STI) 进行中断处理 恢复现场(POP reg’s) 中断返回(IRET)
通常将中断判优与中断源识别合并在一起进 行处理。
• x86系统中,这项任务由PIC和CPU共同完成。 系统中,这项任务由 共同完成。 系统中 和 共同完成
11
软件判优
IN AL, PORT_R ; PORT_R是锁存器地址 是锁存器地址 CLC RCR AL, 1 JC INTS01 ; 转向故障处理 RCR AL, 1 JC INTS02 ; 转向告警处理 …… …… …… JMP A1 …… JMP A2 ……
第10讲 中断系统
苏 放 sufang@bupt.edu.cn 北京邮电大学 信息与通信工程学院
1
中断的基本概念
什么是中断?
发申 请 发申 请
CPU
中断服务程 序 中断服务程 序
2
外 设
中断的定义
CPU执行程序时,由于发生了某种随机 的事件(外部或内部),引起CPU暂时中断 正在运行的程序,转去执行一段特殊的 服务程序(中断服务子程序或中断处理程 序),以处理该事件,该事件处理完后又 返回被中断的程序继续执行,这一过程 称为中断。
30
中断向量表的初始化
例:中断类型码为48H的中断处理子程序的 名字为int 48h,编写程序段将该中断处理子 程序的入口地址放入向量表。
• 对INTR,CPU应处于开中断状态,即IF=1; , • 当前没有复位(RESET)和保持(HOLD)信号。
若NMI和 INTR 同时发生,则首先响应NMI。
16
3)中断响应(续)
CPU中断响应时,要做下述三项工作:
• 向中断源发出INTA中断响应信号; • 断点保护,包括CS、IP和PSW(FLAGS)。这 主要是保证中断结束后能返回被中断的程序。 • 获得中断服务程序首地址(入口)。
• 当前指令执行完。
对INTR,还应满足以下条件 , • 当前指令是STI和IRET,则下条指令也要执行完。 和 。 • 当前指令带有LOCK、REP等指令前缀时,则把它们看成一 、
个整体,要求完整地执行完;
——中断优先级排队问题。
中断优先级控制要处理两种情况:
• 对同时产生的中断:应首先处理优先级别较高的 中断;若优先级别相同,则按先来先服务的原则 处理; • 对非同时产生的中断:低优先级别的中断处理程 序允许被高优先级别的中断源所中断——即允许 中断嵌套。
10
中断判优
中断优先级的控制方法
• 硬件判优 硬件判优——链式判优、并行判优(中断向量法) 链式判优、 链式判优 并行判优(中断向量法) • 软件判优——顺序查询中断请求,先查询的先服 顺序查询中断请求, 软件判优 顺序查询中断请求 即先查询的优先级别高) 务(即先查询的优先级别高)
• 外部中断
非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU必须响应它。 可屏蔽中断INTR:类型号由PIC提供。IF=1时CPU才能响应。
中断优先权从高到低的顺序是:除法溢出中断 中断优先权从高到低的顺序是:除法溢出中断→INT n →INTO →NMI →INTR →单步中断 单步中断
20
8086/8088中断源类型 中断源类型
IREQ
外设3 外设3 外设接口3 外设接口3
IREQ 中断确认 INTAin 菊花链 逻辑电路
INTA
INTAin
INTAin
INTR
≥1
┇
14
菊花链逻辑电路
外设接口
三态门 中 断 向 量 码
DB
E
中断确认 菊花链 逻辑电路
IREQ
&
=1 ≥1 INTAin
INTR 15
INTAout
3)中断响应
23
中断向量和中断向量表
中断响应后, 通过中断类型号找到中断向量表, 中断响应后,CPU通过中断类型号找到中断向量表,进而找 通过中断类型号找到中断向量表 到中断服务程序。 到中断服务程序。 中断向量 • 存放各类中断的中断服务程序的入口地址(段和偏移) 它提供一个指向中断处理子程序的起始地址。 它提供一个指向中断处理子程序的起始地址。 中断向量表 :将所有的中断处理服务程序的入口地址都集中 在一起,构成一个中断地址的存放表,即中断向量表。 在一起,构成一个中断地址的存放表,即中断向量表。 位于内存的00000H~003FFH,大小为1KB,共256个 中断向量,每个中断向量占用4 Bytes,低字为段内偏移, 高字为段基址。
• 溢出、断点、除法溢出、单步、非屏蔽中断的 类型码为固定值 固定值 • 软件中断的类型码由指令给出 由指令给出 • 可屏蔽中断的类型码由PIC给出 由 给出
22
中断源的识别
CPU响应INTR中断时,会产生两个中断响应总 线周期,要求PIC在第2个中断响应总线周期把 中断类型码放到数据总线上,供CPU读入。
00004 H
向量 地址: 地址: 4AH*4=128H
00008 H
F000:1806 : 中断处理 服务程序 IRET
28
003FF H
中断向量表的初始化
初始化——将中断服务程序的入口地址放入 向量表 (1)直接写入法。
• 使用指令将中断服务程序入口地址的IP写入n×4 的RAM位置,中断服务程序入口的CS写入 n×4+2的位置。
中断请求信号应保持到中断被处理为止; CPU响应中断后,中断请求信号应及时撤销。
• 在8086/8088系统中,外设的中断要经过8259A可编程 中断控制器(PIC)的排队判优后向CPU发出:
(I/O接口 n→ PIC → CPU 接口) 接口
1
8
2.1)中断源识别
计算机中的中断源有很多,CPU必须识别是 哪一个设备产生中断。识别中断源有两个方 法:
中断源
中断源分为:外部中断、内部中断
5
中断源
8086/8088的外部中断信号:INTR、NMI
• INTR——可屏蔽中断请求,高电平有效,受IF标 可屏蔽中断请求,高电平有效, 可屏蔽中断请求 标 志的控制。 志的控制。 • NMI——非屏蔽中断请求,上升沿有效,任何时 非屏蔽中断请求, 非屏蔽中断请求 上升沿有效, 都要响应此中断请求信号。 候CPU都要响应此中断请求信号。 都要响应此中断请求信号
3
为何要引入中断?
提高数据传输率; 避免了CPU不断检测外设状态的过程,提 高了CPU的利用率。 实现对特殊事件的实时响应。如多任务系统 操作系统中:
• • • • 缺页中断 设备中断 各类异常 实时钟,。。。等
4
引起CPU中断的事件——中断源。
• 外设——请求输入输出数据,报告故障等 外设 请求输入输出数据, 请求输入输出数据 • 事件——掉电、硬件故障、软件错误、非法操作、 掉电、硬件故障、软件错误、非法操作、 事件 掉电 定时时间到等
中断返回后
CS FLAG
19
SP
8086/8088的中断系统
与中断有关的控制线为:NMI、INTR、INTA 8086系统的中断源(256个)
• 内部中断
软件中断:即INT n指令,类型号n(0-255)。 • 除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。 • 单步中断:类型号1,TF=1时产生(当前指令需执行完) • 断点中断:类型号3,这是一个软件中断,即INT 3指令。 • 溢出中断:类型号4,这是一个软件中断,即INTO指令。
18
5)中断返回
执行中断返回指令IRET
• IRET指令将使CPU把堆栈内保存的断点信息弹 出到IP、CS和FLAG中,保证被中断的程序从断 点处能够继续往下执行。
SP IPL IPH CSL CSH FLAGL FLAGH IPL IPH CSL CSH FLAGL FLAGH IP
进入中断服 务程序时
26
例
例:设某中断源的类型码为4AH,试画出求 设某中断源的类型码为 , 中断服务处理程序的示意图。 中断服务处理程序的示意图。 中断向量表指针为4*n=4*4AH=128H, 解: 中断向量表指针为 , 即:0000:0128H。 : 。 通过中断向量表, 通过中断向量表,中断服务程序的入口 地址为0F000H:1806H。 地址为 : 。
27
例
中断向量表
物理地址 00000 H 00001 H 单元内容 类型 0 中断处理 程序 入口地址 类型 1 中断处理 程序 入口地址 ………… ………… ………… ………… 类型 FFH 中断处理 程序 入口地址 INT MOV 4AH AL,30 , 地址 0:124 : 0:125 : 0:126 : 0:127 : 0:128 : 0:129 : 0: : 12A 0: : 12B 0: : 12C 0: : 12D 0:12E : 0:12F : 单元内容 类型 49 H 中断 向量 06 H 18 H 00 H F0 H 类型 4B H 中断 向量 I P=1806H CS=F000H
12
A1: A2: INTS01: INTS02:
硬件优先权排队电路
13
硬件优先权排队-----链式判优电路原理图 链式判优电路原理图 硬件优先权排队
外设1 外设1 CPU 外设接口1 外设接口1
IREQ 中断确认 菊花链 逻辑电路 中断确认 菊花链 逻辑电路
外设2 外设2 外设接口2 外设接口2
软件中断指令 n 溢出中断 断点中断 除法错 4 3 中断逻辑 2 NMI 非屏蔽中断请求
0 1 INTR
单步中断 8086/8088CPU内部逻辑 8086/8088CPU内部逻辑 CPU
中断控 制器 8259A PIC
可 屏 蔽 中 断 请 求
Biblioteka Baidu
21
中断源的识别
8086系统采用中断类型码来识别不同的中断 源,每个中断源都有一个与它相对应的中断 类型码 。
6
中断过程
五个步骤:
• • • • • 中断请求 中断判优(有时还要进行中断源识别) 中断响应 中断服务 中断返回
7
1)中断请求
外设接口(中断源)发出中断请求信号,送到CPU 的INTR或NMI引脚;
• 中断请求信号:边沿请求,电平请求 中断请求信号:边沿请求, 例如, 为边沿请求, 例如,NMI为边沿请求,INTR为电平请求 为边沿请求 为电平请求
• 软件查询。将中断信号从数据总线读入,用程序 软件查询。将中断信号从数据总线读入, 进行判别。 进行判别。 • 中断矢量法。由中断源提供中断类型号,CPU根 中断矢量法。由中断源提供中断类型号, 根 据类型确定中断源。( 。(8086/8088) 据类型确定中断源。( )
9
2.2)中断判优
多个中断源产生中断,CPU首先为谁服务?
29
例
例 若中断类型号n=70H,中断服务程序的 过程名是INTSUB。借助伪指令和传送指令, 将中断服务程序入口地址写入中断向量表。
VECDATA SEGMENT AT 0 ORG 70H*4 LOCA_70 DW 2 DUP (?) VECDATA ENDS ININT SEGMENT …… MOV LOCA_70, OFFSET INTSUB MOV LOCA_70+2, SEG INTSUB
24
根据中断类型号获得中断服务程序入口
方法: 中断向量在IVT中的存放地 中断向量在 中的存放地 址=4×n ×
25
中断类型和中断向量表
8086中断处理流程 中断处理流程
在获得中断类型号后, 入栈, 清零。 ① CPU在获得中断类型号后,先自动将 入栈,并自动将 和TF清零。 在获得中断类型号后 先自动将FR入栈 并自动将IF和 清零 自动将当前CS和 内容入栈 根据中断类型号n从中断向量表中取出中断 内容入栈, ② 自动将当前 和IP内容入栈,根据中断类型号 从中断向量表中取出中断 处理程序的段地址送入CS,偏移地址值送入IP, 处理程序的段地址送入CS,偏移地址值送入IP,从而实现向中断处理程序转 移。 在中断处理程序完成后,用中断返回指令IRET恢复断点,弹回 和CS, 恢复断点, ③ 在中断处理程序完成后,用中断返回指令 恢复断点 弹回IP和 , 并恢复FR的内容,实现向被中断程序的返回。 并恢复 的内容,实现向被中断程序的返回。 的内容
如何得到中断处理程序的首地址? 固定入口法 中断向量法——常用
17
4)中断处理(中断服务)
中断服务子程序特点
• 为”远”过程(类型为FAR) • 要用IRET指令返回
中断服务子程序要做的工作
• • • • • 保护现场(PUSH reg’s) 开中断(STI) 进行中断处理 恢复现场(POP reg’s) 中断返回(IRET)
通常将中断判优与中断源识别合并在一起进 行处理。
• x86系统中,这项任务由PIC和CPU共同完成。 系统中,这项任务由 共同完成。 系统中 和 共同完成
11
软件判优
IN AL, PORT_R ; PORT_R是锁存器地址 是锁存器地址 CLC RCR AL, 1 JC INTS01 ; 转向故障处理 RCR AL, 1 JC INTS02 ; 转向告警处理 …… …… …… JMP A1 …… JMP A2 ……
第10讲 中断系统
苏 放 sufang@bupt.edu.cn 北京邮电大学 信息与通信工程学院
1
中断的基本概念
什么是中断?
发申 请 发申 请
CPU
中断服务程 序 中断服务程 序
2
外 设
中断的定义
CPU执行程序时,由于发生了某种随机 的事件(外部或内部),引起CPU暂时中断 正在运行的程序,转去执行一段特殊的 服务程序(中断服务子程序或中断处理程 序),以处理该事件,该事件处理完后又 返回被中断的程序继续执行,这一过程 称为中断。
30
中断向量表的初始化
例:中断类型码为48H的中断处理子程序的 名字为int 48h,编写程序段将该中断处理子 程序的入口地址放入向量表。
• 对INTR,CPU应处于开中断状态,即IF=1; , • 当前没有复位(RESET)和保持(HOLD)信号。
若NMI和 INTR 同时发生,则首先响应NMI。
16
3)中断响应(续)
CPU中断响应时,要做下述三项工作:
• 向中断源发出INTA中断响应信号; • 断点保护,包括CS、IP和PSW(FLAGS)。这 主要是保证中断结束后能返回被中断的程序。 • 获得中断服务程序首地址(入口)。