中断及中断控制器.ppt_第1页
中断及中断控制器.ppt_第2页
中断及中断控制器.ppt_第3页
中断及中断控制器.ppt_第4页
中断及中断控制器.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1页 电气工程学院 6.2 中断及中断控制器8259 6.2.1 中断的基本概念 (1)什么是中断 在日常生活中,中断现象俯拾皆是 在计算机系统中,一个CPU要处理若干事务:数据采集,运算,显示,处理突发事件,通 信,打印.。这就要求采用中断技术,才能作到面面俱到而又不误突发事件的处理时机。 计算机用于测控领域,必然涉及中断。在计算机中,中断的含义很狭窄: 从程序执执行的角度看:CPU正在执执行的当前程序被外设设打断,转转而执执行为为外设设服务务的所 谓谓“中断服务务程序”(ISR:Interrupt Service Routine)。 当 前 程 序 外设n 的中断 服务程 序 CPU INTR 中断请求触发器 外设n 当前程序 : CALL SUBR : 子程序 *外设随机诱发 中断,转入中 断服务程序 *硬、软件配合 寻找入口地址 *由CALL指令引起转入子程序 *预知何时转入子程序 *入口地址直接从CALL中取得 SUBR 从数据传送的角度看,是主机与外设交换信息的一种方式。 第2页 电气工程学院 (2)中断源与中断向量表 中断源 : 能够引发CPU中断的信息源,称为中断源。80X86微机系统中最多允许有256种中 断源,其中中断源类型编号为0255。 *中断系统:为了实现中断而配置的硬件和软件构成的系统 1)内中断(软中断) 指CPU执行某些特殊操作或由INT指令引起的中断,通常分为以下三类: 执行INT n 指令引起的中断,n=00FFH CPU中断 在执行指令的过程中出现某些需要处理的异常而产生的中断。 使用调试程序中的单步或断点设置操作引起的中断. INT n 指令 (n = 0255) 如 INT 21H 执执行该该指令后,转转入系统统的“21H型中断服务务程序”,执执行由AH指定的子程序 21H型中断服务程序 根据AH内容进入某一子程序 AH=01 AH=02 AH=09 AH=0AAH=4C 01H 功能 02H 功能 09H 功能 0AH 功能 4CH 功能 : : : 第3页 电气工程学院 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指令(数组边界检查指令)中断 检查带检查带 符号的数组组下标标是在由包含上界和下界的存储储器块块所限定的范围围内。下标标超出范围围 就产产生中断。 单步调试中断 当标志寄存器中的自陷位TF=1且中断允许标志位IF=1时,CPU处于单步工作方式。 在TD环境下,F7,F8键作为设定功能键,在这两个键的处理程序中,使TF=1, IF=1。 在TD环境中,可以在程序中需要的位置处插入INT 3指令,执行到该指令处,CPU中断 正常执行过程,便于调试程序。 在用户户程序中执执行INT 3无意义义。 第4页 电气工程学院 (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引脚上的中断请请求。 术语术语 :关中断 / 中断禁止 CPU NMI INTR 当NMI上有正跳变信号时,即产生一个 内部引导的类型2中断。NMI引脚上的中 断请求不受IF标志的控制,IF不能屏蔽 NMI引脚上的中断请求。 IF=1,CPU响应INTR引脚上的中断请求; IF=0,CPU不响应INTR引脚上的中断请求 通过INTR引脚传递到CPU的可屏蔽中断,中 断类型号可以为6255 *中断系统统:为为了实现实现 中断而配置的硬件和软软件构成的系统统 第5页 电气工程学院 (3)中断向量表 (P166)(注意内容的展开) 1)中断源的识别 中断技术的核心问题 寻找中断服务程序的入口地址 *识别中断源和寻找入口地址的复杂性 在INTR引脚上可以连接250(6255)个中断源。 CPU INTR 08号中断源 09号中断源 0A号中断源 FF号中断源 08号中断 服务程序 09号中断 服务程序 0A号中断 服务程序 FF号中断 服务程序 ADDR00 ADDR01 ADDR02 : ADDR08 : ADDRFF 中断向量表 中 断 控制器 中断向量表是 中断源与中断 服务程序之间 的“纽带”。 ADDR08 ADDR09 ADDR02 ADDRFF : : 第6页 电气工程学院 任何一个中断源发发出中断请请求,CPU必须须能够够迅速、准确地找到为该为该 中 断源服务务的中断服务务程序的入口地址,怎么找? 从应用角度看,很多中间过程并不需要用户通过编程来完成,因而可以大大 简化中断索引过程的叙述。 这里,分四步(#1、#2、#3、#4)来叙述识别中断源和寻找入口地址 的问题。 #1 识别中断源及寻找入口地址概要 从编程角度看,为了识别中断源及寻找入口地址,外设与CPU必须进行如图所 示的交流。 CPU向外设索取的中断向量号,实际上就是索取中断源的“身份证号”标识 符。CPU取得它,也就识别了中断源。 当CPU取得中断向量号以后,又如何取得相应应中断源的中断服务务程序的入口地 址呢?必须须借助于中断向量表。 * 识别中断源及寻找入口地址概要示意 第7页 电气工程学院 INTR CPU 中断源 N *1请求中断当前程序, 执行N的中断服务程序 *2接受中断请求。但不知道入口地址, 请送标识码(中断向量号)! *3标识码是N,请按规则,在中断向量表 中获取N的中断服务程序的入口地址。 什么是“中断向量表”,如何根据标识码从中查找入口地址? #2 中断向量表 中断类类型号:即中断源标识码标识码 或中断向量号。80X86给给每一个中断源分 配了一个序号,从00FFH,共256个。 在80X86中是通过中断类型号来识别中断源的。 第8页 电气工程学院 中断向量:中断服务务程序的入口地址 中断向量表: *80X86在内存0段0000H03FFH这1K字节中建立了一个中断向量表,用以存放256个中 断向量。 *各中断源的中断服务程序入口地址在内存中断向量表中有固定的存放位置以中断 类型号X4开始的连续四个字节单元中, 前两个字节存放中断服务程序的入口地址的偏移量, 后两个字节存放中断服务程序的入口地址的段基址。 对于0号中断而言,设其中断服务程序的入口地址是: UUVV:XXYY(其物理地址是 UUVV0 + 0XXYY),则有: 0000:0000 YY 0000:0001 XX 0000:0002 VV 0000:0003 UU 对于0aH号中断而言,设其中断服务程序的入口地址是: 0100:0051(其物理地址是 01000 +0051),则则有: 0a x 4=0028H中断 向量 0000:0028 51 0000:0029 00 0000:002A 00 0000:002B 01 中断向量地址 第9页 电气工程学院 中断向量地址:存放中断向量(入口地址)的存储单元的地址, 即N 4、N 4 + 1、N 4 + 2、N 4 + 3 #3 如何根据中断类型号在中断向量表中寻找入口地址? CPU在响应应中断时时,根据中断类类型号,从中断向量表中取出高两个字节节(入口地址的 段基址)装入代码码段寄存器CS;低两个字节节(入口地址的偏移量)装入指令指针针寄存器IP 中,转转入中断服务务程序。 中断响应时,CPU将有以下操作: 把F寄存器、IP寄存器和CS寄存器的内容压入堆栈; 把 0:N 4和0:N 4+1 的内容送入IP; 把 0:N 4+2和0:N 4+3的内容送入CS; 跳到CS:IP去执行中断服务程序。 设设某中断源的中断类类型号为为0aH,执执行中断时时,CPU根据0aH,得到28H ,从0028H,0029H,002AH和002BH这这四个单单元中取得 0100:0051 并把前两 个字节节0051H送入IP,后两个字节节0100H送入CS。物理地址为为 01000H+00051H=01051H,即中断服务务程序的人口地址。 谁提供中断类型号? 当中断是由指令INT n 产产生时时, 指令直接提供中断向量; 第10页 电气工程学院 当中断是由外设产生时,应由该外设向CPU提供中断向量 YY XX VV UU 51 00 00 01 CPU 响应中断 ,则把中断服 务程序入口地 址送入IP和CS 0000: 0000H IP IP CS CS IP CS 中断号N N4 内存地址 中断向量表 00H 00H 0000: 0004H 01H 04H 0AH 28H 0000: 0028H 0000: 0029H 0000: 002AH 0000: 002BH N N4 FFH 03FCH 0000:03FCH 0000:03FFH CPU根据中断源提供的标识码(即:中断类型号,中断向量号)即可在中断向量表中找到该 中断源的中断服务程序入口地址。 在硬中断中,向CPU提供中断源识别码是中断技术的关键。需要硬软件的有机配合。8259A 可编程中断控制器用于管理中断,向CPU提供标识码(中断向量号、中断类型号) 第11页 电气工程学院 路线图: 中断源提供类型号N得到中断向量地址4N、4N+1、4N+2、4N+3在 中断向量表中取这4个单元的内容送CS和IP进入中断服务程序。 例:设某外设的识别码为0aH, 其中断服务程序的入口地址为:0100:0051H CPU 0a x 4 =0028H INTR IACK 0aH 外设 0aH 外 设 中断 服务 程 序 51 00 00 01 中断向量表 DB 用户编 程填写 用户 编 写 中断发生之前, 用户先要完成的两项工作 问题:在多个中断源的情况下, 如何把优先级最高的中断源的识 别码送给CPU?怎么送? 0000:0028 0000:0029 0000:002A 0000:002B 0a 0100:0051 第12页 电气工程学院 形象地给出了与中断操作有关的主要过程。设中断类型号为0aH,其中断服务 程序的入口地址已经填入到中断向量表中正确的位置。 中断主要过程: 0aH号中断源:情况紧急,请求CPU执行0aH号中断服务程序。 CPU:现在正好没有比你更紧迫的事件要处理,可以接受你的请求,但苦于不知道你是谁, 请送你的“身份证号”中断类型号。 0aH号中断源:我是0aH号中断源。 CPU严格按“游戏规则”,根据0aH,得到28H,从0028H,0029H,002AH和002BH这四个单 元中取得 0100:0051 并把低两个字节0051H送入IP,高两个字节0100H送入CS。绝对地址为 01000H+00051H=01051H,即中断服务程序的人口地址。 CPU执执行0aH号中断服务务程序。 #4中断向量的填入 谁来填写中断向量表中各项的内容? 开机后,BIOS立即把有关的中断向量填入中断向量表中(包括07FH一段),当 BIOS引导DOS到内存后,DOS进行初始化时,又把某些中断向量填入中断向量表,还要 修改由BIOS装入的某些中断向量。 用户的中断服务程序的入口地址应当由用户自己填写, 中断向量表的设置 当CPU响应中断时,将从中断向量表中读取中断向量送给CS和IP,转去执行中断服 务程序。因此,用户必须事先将中断服务程序的入口地址填入系统的中断向量表中,填 入的方法有两种。 第13页 电气工程学院 假设中断类型号为32H,断服务程序入口处的标号为INTSUB。 用程序设置中断向量表 、 CLI ;关中断 MOVAX,0 ;0段 MOVES,AX MOVDI,4*32H ;0段内偏移地址 LEAAX,INTSUB ;取入口地址的偏移地址 CLD ;增址 STOSW ;把入口地址的偏移地址存入 ;0000:4*32 字单元 MOVAX,SEG INTSUB ;取入口地址的段基址 STOSW ;把入口地址的段基址存入 ;0000:4*32+2 字单元 、 DI+2 432+2 DI 432+0 用CLD(Clear DF) 设置DF=0,增址修改 AL偏移 AH地址 AL段基 AH址 用STOSW指令 完成填写中断 向量 中断向量表 ES 0段 第14页 电气工程学院 P167 或: 、 MOVAX,0 ;0段 MOVDS,AX MOVBX,4*32H ;0段内偏移地址 MOVAX,OFFSET INTSUB ;取入口地址的偏移地址 MOV BX,AX ;把入口地址的偏移地址存入 ;0000:4*32 字单元 MOVAX,SEG INTSUB ;取入口地址的段基址 MOV BX+2,AX ;把入口地址的段基址存入 ;0000:4*32+2 字单元 DI+2 432+2 DI 432+0 AL偏移 AH地址 AL段基 AH址 中断向量表 DS 0段 用DOS功能设置中断向量表(07/10/31 007) *中断向量的置换 在中断向量表中,系统占有若干单元存放系统自己的中断服务程序的入口地址(中断向量 ),微机在初始化过程中,把这些中断向量填写到中断向量表中。 例如:系统统辅辅串口占用中断向量号0BH,系统统初始化时时,已经经在0B40B4+3( 002CH002FH)这这4个单单元中填写了中断向量;如果用户户也想占用0BH,也必须须把用户户的中 断向量写入这这4个单单元。为为了不破坏系统设统设 置的中断向量,需要进进行中断置换换: 第15页 电气工程学院 IP L IP H CS L CS H 用户中断 服务程序 CS:IP 原中断向量 堆栈栈 CS:IP 1 2 3 0000:002CH 0000:002DH 0000:002EH 0000:002FH *借用DOS 35H号功能,读出原中断向量; *借用DOS 25H号功能,把用户中断向量写入中断向量表 把原中断向量填回中断向量表 1)35H号功能: 入口:AL:中断向量号 出口:ES存放中断向量的段基址;BX存放偏移地址 2)25H号功能 入口:AL:中断向量号;DS:中断向量的段基址;DX:偏移地址 例:设某外设的中断服务程序的入口地址为INTP,中断类型号为0BH。 第16页 电气工程学院 如果把0BH改变0AH,程序中相关部分应当怎么处理? (3)中断描述符表 在DOS环境下,486工作在实模式时,中断服务程序的属性比较单一,仅用中断向量表明 它的位置就可以了。 : MOV AX,350BH ;AH=35H,AL=0BH INT 21H ;从向量表中读出原中断向量 ;存人 ES:B PUSH ES ;把原中断向量压入堆栈 PUSH BX MOV AX,SEG INTP ;取用户中断向量段基址 MOV DS,AX ;25H功能要求基地址送入DS MOV DX,OFFSET INTP ;用户中断向量偏移 地址 MOV AX,250BH ;AH=25H,AL=0BH INT 21H ;把用户中断服务程序入口地址 : ;填入中断向量表 POP DX ;取原中断向量 POP DS MOV AX,250BH INT 21H ;把原中断向量填回中断向量表 第17页 电气工程学院 在多任务操作系统(如:UNIX,WINDOWS)管理下,486工作在保护模式的时候 ,情况要复杂得多,仅仅用中断向量已经不能全面描述中断服务程序的全部属性了,而必 须: 用中断描述符来描述中断服务程序; 用中断描述符表来代替中断向量表。 暂时了解到此 (4)中断优先级与中断嵌套 CPU在执行中断服务程序的过程中,被高优先级的中断源中断,又转入另一个中断服务 程序的操作,叫中断嵌套。 P170 图6.12 嵌套原则:高级可以中断低级,低级不能中断高级或同级。 P170 表6.1 给出了在80486中,各大类中断源的优先级。 (5)CPU响应中断的条件 并非一产生中断请求,CPU就响应中断。CPU响应中断是有一定条件的,其中以可屏蔽 中断的条件最多,以此为例,讲解CPU响应可屏蔽中断的条件 中断源发出中断请求信号 中断请求信号不被屏蔽(请求能够被传递到INTR引脚),在I/O口这一级增加一道 关口,增加控制的灵活性。 CPU愿意接受中断(CPU开中断,允许中断) 没有更高优先级的中断 执执行完当前指令 第18页 电气工程学院 通过一张简图,解释以上几点的含义。 CPU INTR 与 门 中断屏蔽(允许)触发器 控制端口 中断请求触发器 外 设 请求信 号是否 被屏蔽 中断是 否打开 保存请求信号直到被响应为止 有了以上基础,再看P164 图6. 8 。 第19页 电气工程学院 *主干:外设数据数据端口DBCPU *为为配合中断操作,增加若干环节环节 。中断允许许触发发器受控于CPU,CPU对对控制信号端口发发出控制 信号,可以把允许许触发发器置1(打开与门门,请请求信号能够够被传传送到INTR)或置0(屏蔽请请求信号 )。 输 入 装 置 锁存器 数据 D & & 三 态 缓冲器 R Q M/IO W/R M/IO W/R 5V Pd Ps 地址 译码 数据口 地址总线 (A7-A0) 控制口 CPU数据总线 选通 信号 & D Q 数据线D0位 INTR 中断请求 触发器 I/O环节的 中断允许触发器 第20页 电气工程学院 (6)中断处理过程 内中断处理过程 CPU自动产生中断类型号n; (SP)-2(SP),标志寄存器F内容入栈; (SP)-2(SP),当前代码段CS内容入栈; (SP)-2(SP),当前指令计数器IP内容入栈; 禁止外部中断IF0,禁止单步中断TF0; 从中断向量表中取中断服务程序入口地址(4*N单元的字内容送IP,4*N2单元里的内容送 CS); 转中断服务程序; 执行中断服务程序并返回,弹出IP,CS,F,返回断点。 外中断(INTR)执行过程 CPU发出两个中断响应信号INTA,第二个INTA时,CPU从当前数据总线上取中断类型码N(通 常由管理INTR的控

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论