中断及中断控制器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在80X86中是通过中断类型号来识别中断源的。
③单步调试中断
当标志寄存器中的自陷位TF=1且中断允许标志位IF=1时,CPU处于单步工作方式。 在TD环境下,F7,F8键作为设定功能键,在这两个键的处理程序中,使TF=1, IF=1。 在TD环境中,可以在程序中需要的位置处插入INT 3指令,执行到该指令处,CPU中断 正常执行过程,便于调试程序。 在用户程序中执行INT 3无意义。
CPU 当 前 程 序 外设n 的中断 服务程 序
* 外设随机诱发 中断,转入中 断服务程序 * 硬、软件配合 寻找入口地址
INTR 中断请求触发器 外设n 当前程序 : CALL SUBR :
SUBR
子程序
*由CALL指令引起转入子程序 *预知何时转入子程序 *入口地址直接从CALL中取得
从数据传送的角度看,是主机与外设交换信息的一种方式。
*中断系统:为了实现中断而配置的硬件和软件构成的系统
(3)中断向量表 (P166)(注意内容的展开) 1)中断源的识别
中断技术的核心问题 ——寻找中断服务程序的入口地址
*识别中断源和寻找入口地址的复杂性 在INTR引脚上可以连接250(6~255)个中断源。
CPU
中 断 控制器
ADDR08 08号中断 服务程序
6.2 中断及中断控制器8259
6.2.1 中断的基本概念 (1)什么是中断
在日常生活中,中断现象俯拾皆是…… 在计算机系统中,一个CPU要处理若干事务:数据采集,运算,显示,处理突发事件,通 信,打印…….。这就要求采用中断技术,才能作到面面俱到而又不误突发事件的处理时机。 计算机用于测控领域,必然涉及中断。在计算机中,中断的含义很狭窄: 从程序执行的角度看:CPU正在执行的当前程序被外设打断,转而执行为外设服务的所谓 “中断服务程序”(ISR:Interrupt Service Routine)。
21H型中断服务程序
AH=01 AH=02
根据AH内容进入某一子程序
AH=09 AH=0A AH=4C
:
01H 功能
02H 功能
09H 功能
0AH 功能
4CH 功能
:
:
② CPU中断
此类中断使用了0、1、3、4、6、7中断号 *1 除法错中断 (属于CPU的0型中断) 除数为0或商超过有关寄存器所能表示的最大值,产生除法错中断 *2 INTO指令 溢出中断指令(属于CPU的4型中断) 例: ADD AL,BL INTO ;当OF=0,不引起INTO操作 ;当OF=1时,引起溢出中断 *BOUND指令(数组边界检查指令)中断 检查带符号的数组下标是在由包含上界和下界的存储器块所限定的范围内。下标超出范围 就产生中断。
(2)中断源与中断向量表 中断源 : 能够引发CPU中断的信息源,称为中断源。80X86微机系统中最多允许有256种中 断源,其中中断源类型编号为0~255。 *中断系统:为了实现中断而配置的硬件和软件构成的系统 1)内中断(软中断) 指CPU执行某些特殊操作或由INT指令引起的中断,通常分为以下三类: ① 执行INT n 指令引起的中断,n=00~FFH ② CPU中断 在执行指令的过程中出现某些需要处理的异常而产生的中断。 ③ 使用调试程序中的单步或断点设置操作引起的中断. ① INT n 指令 (n = 0~255) 如 INT 21H 执行该指令后,转入系统的“21H型中断服务程序”,执行由AH指定的子程序
任何一个中断源发出中断请求,CPU必须能够迅速、准确地找到为该中 断源服务的中断服务程序的入口地址,怎么找? 从应用角度看,很多中间过程并不需要用户通过编程来完成,因而可以大大 简化中断索引过程的叙述。 这里,分四步(#1、#2、#3、#4)来叙述识别中断源和寻找入口地址 的问题。 #1 识别中断源及寻找入口地址概要 从编程角度看,为了识别中断源及寻找入口地址,外设与CPU必须进行如图所 示的交流。 CPU向外设索取的中断向量号,实际上就是索取中断源的“身份证号”——标 识符。CPU取得它,也就识别了中断源。 当CPU取得中断向量号以后,又如何取得相应中断源的中断服务程序的入口地 址呢?必须借助于中断向量表。 * 识别中断源及寻找入口地址概要示意
(2)外中断(重点) 由外设向CPU发出中断请求。 1)非屏蔽中断 NMI (Non-Maskable Interrupt) 不受CPU内部中断允许标志IF的屏蔽 2)可屏蔽中断 INTR (maskable INTRrupt) 受CPU内部中断允许标志IF的屏蔽 STI指令, 使IF=1,CPU可以接受来自INTR引脚上的中断请求。 术语:开中断 / 中断允许 / 允中 CLI指令, 使IF=0,CPU不接受来自INTR引脚上的中断请求。 术语:关中断 / 中断禁止
当 NMI 上有正跳变信号时,即产生一个 内部引导的类型2中断。NMI引脚上的中 断请求不受 IF 标志的控制, IF 不能屏蔽 NMI引脚上的中断请求。
CPU NMI INTR
IF=1,CPU响应INTR引脚上的中断请求; IF=0,CPU不响应INTR引脚上的中断请求 通过 INTR 引脚传递到 CPU 的可屏蔽中断,中 断类型号可以为6~255
INTR
CPU
*1请求中断当前程序, 执行N的中断服务程序 *2 接受中断请求。但不知道入口地址, 请送标识码(中断向量号)!
中断源 N
*3 标识码是 N ,请按规则,在中断向量表 中获取N的中断服务程序的入口地址。
什么是“中断向量表”,如何根据标识码从中查找入口地址 ?
#2 中断向量表
①中断类型号:即中断源标识码或中断向量号。80X86给每一个中断源分 配了一个序号,从00—FFH,共256个。
INTR
中断向量表
ADDR00 ADDR01 ADDR02 : ADDR08 : ADDRFF ADDR09 09 号 中 断 服务程序 ADDR02 0A 号 中 断 服务程序
08号中断源 09wenku.baidu.com中断源 0A号中断源
:
FF号中断源
:
ADDRFF FF 号 中 断 服务程序
中断向量表是 中断源与中断 服务程序之间 的“纽带”。
③单步调试中断
当标志寄存器中的自陷位TF=1且中断允许标志位IF=1时,CPU处于单步工作方式。 在TD环境下,F7,F8键作为设定功能键,在这两个键的处理程序中,使TF=1, IF=1。 在TD环境中,可以在程序中需要的位置处插入INT 3指令,执行到该指令处,CPU中断 正常执行过程,便于调试程序。 在用户程序中执行INT 3无意义。
CPU 当 前 程 序 外设n 的中断 服务程 序
* 外设随机诱发 中断,转入中 断服务程序 * 硬、软件配合 寻找入口地址
INTR 中断请求触发器 外设n 当前程序 : CALL SUBR :
SUBR
子程序
*由CALL指令引起转入子程序 *预知何时转入子程序 *入口地址直接从CALL中取得
从数据传送的角度看,是主机与外设交换信息的一种方式。
*中断系统:为了实现中断而配置的硬件和软件构成的系统
(3)中断向量表 (P166)(注意内容的展开) 1)中断源的识别
中断技术的核心问题 ——寻找中断服务程序的入口地址
*识别中断源和寻找入口地址的复杂性 在INTR引脚上可以连接250(6~255)个中断源。
CPU
中 断 控制器
ADDR08 08号中断 服务程序
6.2 中断及中断控制器8259
6.2.1 中断的基本概念 (1)什么是中断
在日常生活中,中断现象俯拾皆是…… 在计算机系统中,一个CPU要处理若干事务:数据采集,运算,显示,处理突发事件,通 信,打印…….。这就要求采用中断技术,才能作到面面俱到而又不误突发事件的处理时机。 计算机用于测控领域,必然涉及中断。在计算机中,中断的含义很狭窄: 从程序执行的角度看:CPU正在执行的当前程序被外设打断,转而执行为外设服务的所谓 “中断服务程序”(ISR:Interrupt Service Routine)。
21H型中断服务程序
AH=01 AH=02
根据AH内容进入某一子程序
AH=09 AH=0A AH=4C
:
01H 功能
02H 功能
09H 功能
0AH 功能
4CH 功能
:
:
② CPU中断
此类中断使用了0、1、3、4、6、7中断号 *1 除法错中断 (属于CPU的0型中断) 除数为0或商超过有关寄存器所能表示的最大值,产生除法错中断 *2 INTO指令 溢出中断指令(属于CPU的4型中断) 例: ADD AL,BL INTO ;当OF=0,不引起INTO操作 ;当OF=1时,引起溢出中断 *BOUND指令(数组边界检查指令)中断 检查带符号的数组下标是在由包含上界和下界的存储器块所限定的范围内。下标超出范围 就产生中断。
(2)中断源与中断向量表 中断源 : 能够引发CPU中断的信息源,称为中断源。80X86微机系统中最多允许有256种中 断源,其中中断源类型编号为0~255。 *中断系统:为了实现中断而配置的硬件和软件构成的系统 1)内中断(软中断) 指CPU执行某些特殊操作或由INT指令引起的中断,通常分为以下三类: ① 执行INT n 指令引起的中断,n=00~FFH ② CPU中断 在执行指令的过程中出现某些需要处理的异常而产生的中断。 ③ 使用调试程序中的单步或断点设置操作引起的中断. ① INT n 指令 (n = 0~255) 如 INT 21H 执行该指令后,转入系统的“21H型中断服务程序”,执行由AH指定的子程序
任何一个中断源发出中断请求,CPU必须能够迅速、准确地找到为该中 断源服务的中断服务程序的入口地址,怎么找? 从应用角度看,很多中间过程并不需要用户通过编程来完成,因而可以大大 简化中断索引过程的叙述。 这里,分四步(#1、#2、#3、#4)来叙述识别中断源和寻找入口地址 的问题。 #1 识别中断源及寻找入口地址概要 从编程角度看,为了识别中断源及寻找入口地址,外设与CPU必须进行如图所 示的交流。 CPU向外设索取的中断向量号,实际上就是索取中断源的“身份证号”——标 识符。CPU取得它,也就识别了中断源。 当CPU取得中断向量号以后,又如何取得相应中断源的中断服务程序的入口地 址呢?必须借助于中断向量表。 * 识别中断源及寻找入口地址概要示意
(2)外中断(重点) 由外设向CPU发出中断请求。 1)非屏蔽中断 NMI (Non-Maskable Interrupt) 不受CPU内部中断允许标志IF的屏蔽 2)可屏蔽中断 INTR (maskable INTRrupt) 受CPU内部中断允许标志IF的屏蔽 STI指令, 使IF=1,CPU可以接受来自INTR引脚上的中断请求。 术语:开中断 / 中断允许 / 允中 CLI指令, 使IF=0,CPU不接受来自INTR引脚上的中断请求。 术语:关中断 / 中断禁止
当 NMI 上有正跳变信号时,即产生一个 内部引导的类型2中断。NMI引脚上的中 断请求不受 IF 标志的控制, IF 不能屏蔽 NMI引脚上的中断请求。
CPU NMI INTR
IF=1,CPU响应INTR引脚上的中断请求; IF=0,CPU不响应INTR引脚上的中断请求 通过 INTR 引脚传递到 CPU 的可屏蔽中断,中 断类型号可以为6~255
INTR
CPU
*1请求中断当前程序, 执行N的中断服务程序 *2 接受中断请求。但不知道入口地址, 请送标识码(中断向量号)!
中断源 N
*3 标识码是 N ,请按规则,在中断向量表 中获取N的中断服务程序的入口地址。
什么是“中断向量表”,如何根据标识码从中查找入口地址 ?
#2 中断向量表
①中断类型号:即中断源标识码或中断向量号。80X86给每一个中断源分 配了一个序号,从00—FFH,共256个。
INTR
中断向量表
ADDR00 ADDR01 ADDR02 : ADDR08 : ADDRFF ADDR09 09 号 中 断 服务程序 ADDR02 0A 号 中 断 服务程序
08号中断源 09wenku.baidu.com中断源 0A号中断源
:
FF号中断源
:
ADDRFF FF 号 中 断 服务程序
中断向量表是 中断源与中断 服务程序之间 的“纽带”。