资源预览内容
第1页 / 共120页
第2页 / 共120页
第3页 / 共120页
第4页 / 共120页
第5页 / 共120页
第6页 / 共120页
第7页 / 共120页
第8页 / 共120页
第9页 / 共120页
第10页 / 共120页
亲,该文档总共120页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
,微型计算机接口技术第九章 中断系统,9.1中断的基本概念9.280x86的中断指令9.3中断向量9.4系统中断的分类9.58259A中断控制器9.6PC/AT的可屏蔽中断9.7实模式下的定时中断程序设计,第九章 中断系统,9.1 中断的基本概念,复习:CPU与外设交换数据的方式又几种?以查询方式为例:,当外设的数据未准备好时,CPU必须不断查询外设的状态信息,系统效率低下。,中断的基本概念,1、中断方式输入数据的过程分析,中断的基本概念,2、什么是中断?CPU暂停执行现行程序,转而处理随机事件,处理完毕后再返回被中断的程序继续执行,这一全过程称为中断。,3、中断源能引发CPU中断的信息源。中断源可分为:(1) 外部中断源(硬件中断源)I/O设备如键盘、显示器、打印机数据通道如磁带、磁盘时钟如由8254 OUT0引发的中断故障源如掉电、存贮器奇偶校验错(2) 内部中断源(软件中断源)执行INT软件中断指令如 INT 21HCPU指令执行时产生的异常如被0除等,中断的基本概念,4、具有中断请求功能的输入接口,中断的基本概念,4、具有中断请求功能的输入接口,中断的基本概念,5、什么是中断系统?为实现中断功能而采取的硬件和软件的集合。,6、中断系统应具备的基本功能对于硬件中断,接口电路应具有“屏蔽”和 “开放”功能,这种功能可由程序员通过软件控制;能实现中断判优(中断排队),当有多个中断源提出请求时,应能优先响应高级别的中断请求;能实现中断嵌套,即高级别的中断源能够中断正在执行的低级别的中断服务程序;响应中断后能自动转入中断处理,处理完毕能自动返回断点。,中断的基本概念,中断响应及中断嵌套过程示意图(设B中断的级别高于A),中断的基本概念,第九章 中断系统,9.2 80X86中断指令,1、开中断指令STI功能:使标志寄存器中I标志置1,CPU处于开中断状态;2、关中断指令CLI功能:使标志寄存器中I标志置0,CPU处于关中断状态;3、软件中断指令INT nn为中断类型码,是0255之间的无符号整数。功能:无条件转向n型中断服务子程序。注意:中断类型n必须有定义。,80x86的中断指令,INT n 指令的执行过程CPU响应软件中断的过程 F寄存器栈(为了保存INT n 之前的F状态)使F中的T标志置0禁止单步操作;使F中的I标志置0使CPU处于关中断状态; 断点地址栈先将断点的段地址(CS)栈;再将断点的偏移地址(IP)栈; CPU从存储器4n4n+3单元取出n型中断的服务程序入口地址CS : IP,从而转入n型中断服务程序。,80x86的中断指令,4、中断返回指令IRET功能:依次从栈顶弹出6个元素IP,CS,F;如果栈顶是INT n的中断入口地址,则执行IRET后,返回断点,否则不能返回断点。,执行INT n后栈顶示意图,执行IRET示意图,SP,IRET是中断服务程序的出口指令,80x86的中断指令,第九章 中断系统,9.3 中断向量,每个中断都指定了一个类型码,也称为中断号。每一种中断对应有一个中断服务程序(Interrupt Service Program ISP),也可称为中断服务例程(Interrupt Service Routine ISR);ISR本质上就是为特定中断事件服务的代码,中断发生后,在中断系统的控制下,CPU转向ISR执行,为中断事件服务完毕后,再返回被中断程序继续执行。ISR存放在内存中,每个ISR程序段的起始地址被称为ISR的入口地址。,中断向量,1、什么是中断向量?中断向量是实模式下,中断服务子程序的入口地址。它由两部分组成:中断服务程序所在代码段的段基址,2字节;中断服务程序所在代码段的段内偏移地址,2字节;2、中断向量表中断类型码通过一个地址指针表与中断服务子程序的入口地址相联系。实模式下,该表被称为中断向量表;保护模式下,该表被称为中断描述符表;,中断向量,3、中断向量表的设置80x86系统规定,在实模式下,中断向量表需设置在系统RAM最低端1KB单元空间内。即00000H003FFH。如果每个中断向量占用4字节,共可有256个中断。RAM最低1KB空间内,并不是全部作为中断向量表。,中断向量,4、中断向量表的表地址与中断类型的关系,例如,对于21H型中断,其中断向量存放在: 421H = 84H 421H+3 = 87H单元中。请问9CH型中断,其中断向量存放在何处? 9CH = 10011100B,9CH4 = 1001110000B = 270H 所以9CH型中断的中断向量存放在270H273H单元中。,中断向量,5、中断向量的转向作用CPU响应软件中断的过程,中断向量,6、中断向量表的初始化由BIOS设计的中断服务程序(如INT 16H,INT 10H等)其中断向量在加电时由BIOS负责写入中断向量表;由DOS设计的中断服务程序(如 INT 21H)其中断向量是在启动DOS时,由DOS负责写入中断向量表;用户开发的中断服务程序,由用户程序写入其中断向量。,中断向量,问题:用户如何向中断向量表中写入中断向量?,中断向量,方法一:用户自己编写程序填写中断向量CLI;关闭所有中断PUSHDS;保护原DSMOVAX, 0000HMOVDS, AX;DS指向内存最低端MOVBX, 4*n;BX指向入口地址MOVAX, OFFSET SERVICEMOVBX, AX;先填入口偏移地址MOVAX, SEG SERVICEMOVBX+2, AX;后填入口段地址POP DS;恢复原DSSTI;重新开放中断,中断向量,方法二:使用DOS功能调用读写中断向量INT 21H的35H子功能功能:读出n型中断向量入口:AL=中断类型码n出口:ES:BX=n型中断向量INT 21H的25H子功能功能:写入n型中断向量入口:DS=中断服务程序所在代码段的段基址DX=中断服务程序入口的偏移地址出口:无,中断向量,例:把用户程序中名为”TIMER”的中断服务程序的入口地址写入INT 1CH中断向量处。,数据段:OLD1CDD?代码段:MOVAH, 35HMOVAL, 1CHINT21H; 读入原中断向量MOVWORD PTR OLD1C, BX; 保存原中断向量MOVWORD PTR OLD1C+2, ESPUSHDS; 保存原DSMOVAX, CSMOVDS, AX; 设置DS为ISR的CS,中断向量,例:把用户程序中名为 “TIMER”的中断服务程序的入口地址写入INT 1CH中断向量处。,代码段(续):MOVDX, OFFSET TIMER; ISR偏移地址DXMOVAH, 25HMOVAL, 1CH; 设置INT 1CH的中断INT21H; 向量,指向TIMERPOPDS; 恢复原DS,中断向量,第九章 中断系统,9.4 系统中断的分类,系统中断的分类,系统中断分类如下图所示:,系统中断的分类,1、CPU中断CPU中断是指:CPU执行某些操作而引发的中断,这类中断使用了0、1、3、4、6、7中断号。(1)除法错中断 0型中断(2)单步中断 1型中断(3)断点中断 3型中断(4)溢出中断 4型中断,系统中断的分类,2、软件中断执行有定义的INT n指令引发的中断,称为软件中断。软件中断使用05H、10H0FFH中的若干个中断号,具体又可细分为:(1)BIOS中断BIOS中断占用了05H、10H1FH中断号,程序执行相关的软件中断指令(INT n)可调用相应的中断服务程序。例如:INT 05H屏幕打印;INT 10H屏幕显示;INT 11H设备配置检测;,系统中断的分类,INT 12H测试内存容量;INT 13H磁盘I/O;INT 14H串行通信I/O;INT 15HBIOS扩展功能;INT 16H键盘I/O;INT 17H打印机I/O;INT 18H启动PC机上的ROM BASIC(仅老式PC有);INT 19H重新装入引导程序(重启);INT 1AH实时时钟(RTC)管理;中断号1DH、1EH、1FH、41H、46H也被BIOS占用了。但是,与这些中断号对应的并不是中断服务程序,而是一些系统配置参数。,系统中断的分类,(2)DOS中断 DOS中断,又分为DOS专用中断、DOS保留中断、用户可调用的DOS中断以及保留给用户开发的中断。DOS专用中断 22H型中断:程序正常结束,返回父进程; 23H型中断:程序非正常结束,DOS调用该中断; 24H型中断:系统严重错误时DOS调用该中断; 28H3FH型中断:DOS专用。,系统中断的分类,用户可调用的DOS中断 20H型中断:程序执行INT 20H返回DOS; 21H型中断:DOS系统功能调用; 25H型中断:指定驱动器按扇区读; 26H型中断:指定驱动器按扇区读; 27H型中断:设置中断驻留程序(TSR)。用户可开发的DOS中断60H66H。DOS保留中断42H45H、4BH5FH等。,系统中断的分类,第九章 中断系统,9.5 8259A中断控制器,外部硬件中断是由CPU以外的中断请求而引发的。如果有多个中断请求,怎样连接至CPU呢?,8259A中断控制器,1、8259A的内部结构,8259A的内部结构,(1)中断请求寄存器(IRR)寄存引脚IR07上的中断请求信号。IRRi位=1表明对应的IRi引脚上有了中断请求信号。,8259A的内部结构,(2)中断屏蔽寄存器(IMR)寄存程序写入的中断屏蔽字。该寄存器某位为1(IMRi=1)则与其对应的中断请求位(IRRi)就不能申请中断。,8259A的内部结构,中断屏蔽寄存器(IMR)的编程例1:屏蔽IRR72的中断请求,开放IR1、IR0的中断请求MOVAL, 11111100BOUTIMR端口地址, AL,8259A的内部结构,例2:不改变其它位的屏蔽状态,开放IR3的中断请求MOVAL, IMR端口地址ANDAL, 11110111BOUTIMR端口地址, AL,8259A的内部结构,(3)优先权判断电路(排队电路) 比较同时送达优先权电路的中断请求,哪一个 级别最高; 比较CPU正为之服务的中断源和刚进入优先权电路的中断源,哪一个级别更高。,通过判优“选中”其中级别最高的中断源,然后通过中断控制逻辑电路,从INT端向CPU提出中断请求。,8259A的内部结构,(4)中断控制逻辑电路负责处理与中断请求/应答相关的事务。,8259A的内部结构,(4)中断控制逻辑电路作用: 寄存一组初始化命令字和操作命令字,通过译码产生内部控制信号; 当判优电路选中一个中断源时向CPU提中断请求 (INT); 通过#INTA接收CPU送来的中断响应信号,中断响应信号是2个连续的负脉冲。,8259A的内部结构,t,中断响应1,中断响应2,(5)中断服务寄存器(ISR)ISR为8位寄存器,ISRi位和IRRi位一一对应。,8259A的内部结构,(5)中断服务寄存器(ISR)作用: 记录CPU正为之服务的是哪一个中断源。怎样记录?如:通过判优电路IRR0位的请求被选中,8259A向CPU发中断请求,通过#INTA收到第一个中断响应信号后,ISR0位置1,IRR0位置0。ISR0位置1,表明CPU正在准备(或正在)执行IR0的服务程序。反之,如果ISR0位由10,表明IR0的中断服务程序已执行完毕。所以ISR的每一位都是响应中断源的中断服务标志位。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号