第7章输入输出与中断

上传人:我*** 文档编号:137914277 上传时间:2020-07-12 格式:PPT 页数:27 大小:235.50KB
返回 下载 相关 举报
第7章输入输出与中断_第1页
第1页 / 共27页
第7章输入输出与中断_第2页
第2页 / 共27页
第7章输入输出与中断_第3页
第3页 / 共27页
第7章输入输出与中断_第4页
第4页 / 共27页
第7章输入输出与中断_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《第7章输入输出与中断》由会员分享,可在线阅读,更多相关《第7章输入输出与中断(27页珍藏版)》请在金锄头文库上搜索。

1、7.4 8086/8088中断系统,7.4.1 8086/8088的中断源类型 8086/8088 CPU可以处理256种不同类型的中断,每一种中断都给定一个编号(0255),称为中断类型号,CPU根据中断类型号来识别不同的中断源。8086/8088的中断源如图7.17所示。从图中可以看出8086/8088的中断源可分为两大类:一类来自CPU的外部,由外设的请求引起,称为硬件中断(又称外部中断);另一类来自CPU的内部,由执行指令时引起,称为软件中断(又称内部中断)。,NMI(17号引脚),中 断 逻 辑,非屏蔽中断请求,INT 2,硬件(外部)中断,软件(内部)中断,可屏蔽中断请求,中断类型

2、号32255,INTR(18号引脚),中断指令,INT n,N32255,溢出中断,INTO,INT 4,断点,中断,INT 3,单步中断,(TF1),INT 1,除法,错误,INT 0,图7.17 8086/8088中断源,1软件中断(内部中断) 8086/8088的软件中断主要有三类共五种。 (1) 处理运算过程中某些错误的中断 执行程序时,为及时处理运算中的某些错误,CPU以中断方式中止正在运行的程序,提醒程序员改错。 除法错中断(中断类型号为0)。在8086 /8088 CPU执行除法指令(DIV/IDIV)时,若发现除数为0,或所得的商超过了CPU中有关寄存器所能表示的最大值,则立即

3、产生一个类型号为0的内部中断,CPU转去执行除法错中断处理程序。, 溢出中断INTO(中断类型号为4)。CPU进行带符号数的算术运算时,若发生了溢出,则标志位OF=1,若此时执行INTO指令,会产生溢出中断,打印出一个错误信息,结束时不返回,而把控制权交给操作系统。若OF=0,则INTO不产生中断,CPU继续执行下一条指令。INTO指令通常安排在算术指令之后,以便在溢出时能及时处理。例如: ADD AX,BX INTO ;测试加法的溢出,(2) 为调试程序设置的中断 单步中断(中断类型号为1)。当TF=1时,每执行一条指令,CPU会自动产生一个单步中断。单步中断可一条一条指令地跟踪程序流程,观

4、察各个寄存器及存储单元内容的变化,帮助分析错误原因。单步中断又称为陷阱中断,主要用于程序调试。 断点中断(中断类型号为3)。调试程序时可以在一些关键性的地方设置断点,它相当于把一条INT 3指令插入到程序中,CPU每执行到断点处,INT 3指令便产生一个中断,使CPU转向相应的中断服务程序。,(3) 中断指令INT n引起的中断(中断类型号为n) 程序设计时,可以用INT n指令来产生软件中断,中断指令的操作数n给出了中断类型号,CPU执行INT n 指令后,会立即产生一个类型号为n的中断,转入相应的中断处理程序来完成中断功能。,2硬件中断(外部中断) 8086/8088 CPU有两条外部中断

5、请求线NMI (非屏蔽中断)和INTR(可屏蔽中断)。 (1) 非屏蔽中断NMI(中断类型号为2) 整个系统只有一个非屏蔽中断,它不受 IF标志位的屏蔽。出现在NMI上的请求信号是上升沿触发的,一旦出现,CPU将予以响应。非屏蔽中断一般用于紧急故障处理。,(2) 可屏蔽中断INTR (中断类型32255) 可屏蔽中断请求信号从INTR引脚送往CPU,高电平有效,受IF标志位屏蔽,IF0时,对于所有从INTR引脚进入的中断请求,CPU均不予响应;另外,也可以在CPU外部的中断控制器(8259A)中以及各个I/O接口电路中对某一级中断或某个中断源单独进行屏蔽。,当外设的中断请求未被屏蔽,且 IF=

6、1,则 CPU 在当前指令周期的最后一个T状态去采样INTR引脚,若有效,CPU予以响应。CPU将执行两个连续的中断响应周期,送出两个中断响应信号 INTA。第一个响应周期,CPU将地址及数据总线置高阻;在第二个响应周期,外设向数据总线输送一个字节的中断类型号,CPU 读入后,就可在中断向量表中找到该类型号的中断服务程序的入口地址,转入中断处理。,中断响应周期的时序,AD7AD0,ALE,INTA,CLK,中断类型,T1,T2,T3,T4,TI,T1,T2,T3,T4,TI,TI,空闲状态TI在8086系统中一般为三个,而在8088系统中则没有。,值得注意的是,对于非屏蔽中断和软件中断,其中断

7、类型号由CPU 内部自动提供,不需去执行中断响应周期读取中断类型号。,38086/8088中断源的优先级 8086/8088中断源的优先级顺序由高到低依次为:软件中断(除单步中断外)、非屏蔽中断、可屏蔽中断、单步中断。 在PC机系统中,外设的中断请求通过中断控制器8259A连接到CPU的INTR引脚,外设中断源的优先级别由8259A进行管理。,7.4.2 中断向量表 中断向量表是存放中断向量的一个特定的内存区域。所谓中断向量,就是中断服务子程序的入口地址。对于8086/8088系统,所有中断服务子程序的入口地址都存放在中断向量表中。 8086/8088可以处理256种中断,每种中断对应一个中断

8、类型号,每个中断类型号与一个中断服务程序的入口地址相对应。,每个中断服务程序的入口地址占4 个存储单元,其中低地址的两个单元存放中断服务程序入口地址的偏移量(IP);高地址的两个单元存放中断服务程序入口地址的段地址(CS)。 256个中断向量要占 25641024个单元,即中断向量表长度为1K个单元。8086/8088系统的中断向量表位于内存的前 1K字节,地址范围为00000H003FFH。 8086/8088的中断向量表如图7.18所示。,00000H,00003H,00008H,0000BH,00004H,00007H,0000CH,0000FH,00010H,00013H,00014H

9、,0007FH,00080H,003FFH,IP内容,CS内容,类型0中断入口地址,(除法出错),专用中断,(5个),用户自定义中断(224个),系统保留中断(27个),类型1中断入口地址,(单步中断),类型2中断入口地址,(NMI),类型3中断入口地址,(断点中断),类型4中断入口地址,(溢出中断),类型5中断入口地址,类型31中断入口地址,类型32中断入口地址,类型255中断入口地址,0007CH,003FCH,图7.18所示的中断向量表中有5个专用中断(类型0类型4),它们已经有固定用途;27个系统保留的中断(类型531)供系统使用,不允许用户自行定义;224 个用户自定义中断(类型32

10、 255),这些中断类型号可供软中断INT n或可屏蔽中断INTR使用,使用时,要由用户自行填入相应的中断服务程序入口地址。(其中有些中断类型已经有了固定用途,例如,类型21H的中断已用做DOS的系统功能调用)。,由于中断服务程序入口地址在中断向量表中是按中断类型号顺序存放的,因此每个中断服务程序入口地址在中断向量表中的位置可由“中断类型号4”计算出来。CPU响应中断时,把中断类型号N乘以4,得到对应地址4N(该中断服务程序入口地址所占4个单元的第一个单元的地址),然后把由此地址开始的两个低字节单元(4N,4N+1)的内容装入IP寄存器,再把两个高字节单元(4N+2,4N+3)的内容装入CS寄

11、存器,于是CPU转入中断类型号为N的中断服务程序。,这种采用向量中断的方法,CPU 可直接通过向量表转向相应的处理程序,而不需要去逐个检测和确定中断源,因而可以大大加快中断响应的速度。,FLAGS 入栈,N,N,N,完成当前指令,有内部,中断吗?,从指令中或内部,获得中断类型号,从外部得到,中断类型号,TEMP=1?,令TEMPTF,调中断处理程序,Y,Y,Y,有NMI,中断吗?,有INTR,中断吗?,TF1?,执行下一条指令,N,N,N,N,Y,中断类型号2,Y,IF1?,中断类型号1,清IF、TF,CS、IP入栈,返回断点,FLAGS出栈,IP、CS出栈,中断服务,有NMI?,(1),(1

12、),(1),(1),(2),(3),(4),(5),Y,Y,7.4.3 8086/8088的中断处理过程,在图示流程中,(1)(5)是CPU的内部处理,由硬件自动完成。 所有内部中断(除法错、INT n、INTO、单步和断点中断)以及NMI中断不需要从数据总线上读取中断类型码,而INTR中断需由CPU读取中断类型码,其中断类型码由发出INTR信号的接口电路提供。 该流程图还反映出了8086/8088系统中各中断源优先级的高低。,7.4.4 中断服务程序的设计 中断服务程序的一般结构如图7.20所示。如前所述,若该中断处理能被更高级别的中断源中断,则需加入开中断指令。在中断服务程序的最后,一定要

13、有中断返回指令,以保证断点的恢复。 用户在设计中断服务程序时要预先确定一个中断类型号,不论是采用软件中断还是硬件中断,都只能在系统预留给用户的类型号中选择。,关中断,保护现场,开中断,中断服务,恢复现场,中断返回,图7.20 中断服务程序的一般结构,确定了中断类型号,还要把中断服务入口地址置入中断向量表,以保证在中断响应时CPU能自动转入与该类型号相对应的中断服务程序。将中断服务程序入口地址置入中断向量表的方法有两种:DOS系统功能调用法和直接装入法。,1DOS系统功能调用法(INT 21) 功能号: (AH)=25H。 入口参数: (AL)=中断类型号 (DS)=中断服务程序入口地址的段地址

14、 (DX)=中断服务程序入口地址的偏移地址,下面程序段完成中断类型号为60H的入口地址(DS:INT60)置入中断矢量表。 PUSH DS ;保护DS LEA DX,INT60 ;取服务程序偏移地址 MOV AX,SEG INT60;取服务程序段地址 MOV DS,AX MOV AH,25H ;送功能号 MOV AL,60H ;送中断类型号 INT 21H ;DOS功能调用 POP DS ;恢复DS,0000H:0000H,0000H:0180H,2000H:1200H,0000H:03FFH,2000H,1200H,中断矢量表,中断服务程序,INT60,60H4180H,2直接装入法 用传送指令直接将中断服务子程序首地址INT60置入矢量表中。设中断类型号为60H(此类型号对应的矢量表地址为从00180H即0000H: 0180H开始的四个连续存储单元)。程序段如下: XOR AX,AX MOV DS,AX MOV AX,OFFSET INT60 MOV DS:0180H,AX ;置服务程序偏移地址 MOV AX,SEG INT60 MOV DS:0180H+2,AX;置服务程序所在 ;代码段的段地址,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号