您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 微机原理07中断系统资料
8.1中断的基本概念8.2可编程中断控制器82598.3中断服务程序的编程8.4保护模式的中断处理第八章中断与中断控制8.1中断的基本概念中断最初是作为处理器与外部设备交换信息的一种控制方式提出的。由此,最初的中断全部是对外部设备而言的,称为外部中断或硬件中断。随着计算机技术的发展,中断的范围也随之扩大,出现了内部软件中断的概念,它是为解决机器内部运行时出现的异常以及为编程方便而提出的。外部中断或硬件中断通常称为中断,软件中断或异常中断通常称为异常(Exception)8.1中断的基本概念不论哪种中断都遵循同样的中断处理过程中断源中断请求当前程序中断服务程序程序断点中断返回中断响应中断:处理器暂停执行当前程序,转而处理随机发生的事件,处理完毕后再返回到断点处继续执行原来程序的过程中断的类型PC系列微机最多可以支持256种中断,它们被分为四种类型:•内部中断和异常•软件中断•外部可屏蔽中断•外部非屏蔽中断每个中断和异常都指定了一个类型号代表不同的优先级。类型0表示最高优先级的中断,类型255最低优先级的中断1.内部中断和异常为处理器执行某些操作而引起的中断,包括除法错误异常、单步调试中断、断点中断等这类中断使用了0H~09H中的若干个中断号内部中断和异常的例子P.218中断的类型2.软件中断执行有定义的INTn指令而引发的中断,称为软件中断有定义的并非所有的中断号都有对应的中断服务程序软件中断使用05H、10H~0FFH中的若干个中断号软件中断进一步分为BIOS中断和DOS中断中断的类型3.外部可屏蔽中断外部可屏蔽中断是处理器响应各种外部硬件中断的最常用的方法,通过CPU的INTR引脚产生外部可屏蔽中断受处理器内部的中断允许标志位IF的控制处理器以电平触发方式接受INTR请求,当每条指令结束时,若INTR为高电平且IF=1,则CPU响应相应I/O接口的中断请求。处理器只有一个INTR引脚可以接受外部可屏蔽中断请求,为了管理众多的外部中断源,微机系统中采用可编程中断控制器8259。PC系列机通过两片8259级连可以响应15个外部中断源中断的类型4.外部非屏蔽中断为外部紧急请求提供服务的中断,通过处理器的NMI引脚产生NMI输入是上升沿触发的,只要NMI输入端上出现由0到1的跳变,一个中断服务请求就被锁存在Pentium中,与IF标志的状态无关NMI有一个专用的类型号02H使用非屏蔽中断的典型例子是电源故障中断中断的类型中断的优先级与中断嵌套通常一个系统有多个中断源,而CPU同一时刻只能响应一个中断源的请求,那么当多个中断源同时请求中断服务时,应该先响应哪一个,有一个次序安排的问题。按中断源的轻重缓急程度确定的优先级别,称为优先级。内部中断和异常软件中断外部非屏蔽中断外部可屏蔽中断优先级递增中断的优先级与中断嵌套当CPU正在响应某一中断源的请求,执行为其服务的中断服务程序时,如果有优先级更高的中断源发出请求,CPU将中止正在执行的中断服务程序而转入为新的中断源服务,等新的中断服务程序执行完后,再返回到被中止的中断服务程序,这一过程称为中断嵌套。中断嵌套可以有多级,具体级数原则上不限,只取决于堆栈深度中断的优先级与中断嵌套1#中断请求响应返回1#中断服务程序2#中断请求响应返回2#中断服务程序3#中断请求响应返回3#中断服务程序原主程序中断优先级3#2#1#中断向量中断类型号通过一个地址指针表与中断服务程序的入口地址相联,在实模式下,该表称为中断向量表。中断向量表包含256个中断向量。每个中断向量包含两个字(4个字节),高地址字为中断服务程序所在代码段的段基址,低地址字为代码段中中断服务程序第一条指令的偏移量。实模式下,中断向量表存放在内存最低端的1K单元之中,物理地址00000H~003FFHP.222中断指令STI——开中断指令将标志寄存器中的中断标志位IF置1,允许CPU响应来自INTR引脚的中断请求CLI——关中断指令将标志寄存器中的中断标志位IF清0,使CPU不响应来自INTR引脚的中断请求中断指令INTn——软件中断指令n为中断号。调用n号中断服务程序①将标志寄存器压栈②将TF置0,禁止单步操作,将IF置0,使CPU处于关中断状态③断点的CS、IP压栈④从中断向量表取n号中断向量IP、CS⑤转向n号中断服务程序中断指令IRET——中断返回指令中断服务程序的出口指令,从栈顶弹出6个字节依次写入IP、CS和标志寄存器在执行IRET之前必须保证栈顶是断点地址,否则执行IRET指令将导致系统瘫痪8.2可编程中断控制器8259A8259A是一种可编程中断控制器,有如下功能:•一片Intel8259可管理8个中断请求,并把当前优先级最高的中断请求送到CPU的INTR端。•当CPU响应中断时,为CPU提供中断类型码。•8个外部中断的优先级排列方式,可以通过对8259编程进行指定。也可以通过编程屏蔽某些中断请求,或者通过编程改变中断类型码。•允许9片8259级联,构成64级中断系统。在PC/AT系列微机中,使用两片8259级联,构成15级中断8259A的引脚与功能结构P.234•D7~D0:数据线。用于与CPU之间传送命令、状态、中断类型码。•:读出信号。通知8259把某个内部寄存器的值送数据线D7~D0。•:写入信号。通知8259把数据线D7~D0上的值写入内部某个寄存器。•A0:选择内部寄存器的端口地址。在标准AT机中,使用两片8259构成主从式中断系统,主8259的端口地址:20H,21H从8259的端口地址:A0H,A1H•INT:把IRQ7~IRQ0上的最高优先级请求传送到CPU的INTR引脚•:接收CPU的中断响应信号。CPU发出的中断响应信号为两个负脉冲。第一个负脉冲作为中断应答信号,第二个负脉冲到来时,8259从数据线D7~D0上发出中断类型码。8259A的引脚与功能结构8259A的内部结构框图和中断工作过程P.235IRR:中断请求寄存器ISR:中断服务寄存器IMR:中断屏蔽寄存器PR:优先级判别器中断过程执行步骤:P.2368259A的控制字格式初始化命令字(ICW1~ICW4)ICW1~ICW4在初始化程序中设定,且在整个工作过程中保持不变。ICW1~ICW4必须按顺序设定。ICW1写入8259偶地址中(A0=0,在AT机中为20H/A0H),ICW2~ICW4写入8259奇地址中(A0=1,在AT机中为21H/A1H)。P.238图7.14初始化命令字(ICW1~ICW4)1.ICW12.ICW23.ICW3ICW3设置主8259和从8259的联结关系(仅当ICW1中的SNGL=1,系统中有多片8259级联时,才设置ICW3)。4.ICW4规定8259的中断结束方式,中断嵌套方式,缓冲/非缓冲方式。P.237初始化命令字(ICW1~ICW4)ICW1AEQU20H;主片端口地址ICW2AEQUICW1A+1ICW3AEQUICW2AICW4AEQUICW2A…...MOVAL,11H;ICW1,边沿触发,多片,需ICW4OUTICW1A,ALNOP;I/O端口延时MOVAL,08H;ICW2,中断类型码OUTICW2A,ALNOPMOVAL,04H;ICW3,IR2接从片OUTICW3A,ALNOPMOVAL,01H;ICW4,非缓冲,全嵌套,非自动结束OUTICW4A,ALNOPAT机中主片的初始化操作命令字(OCW1~OCW3)OCW1~OCW3在应用程序中设置,且可设置多次。OCW1~OCW3的设置次序无要求。OCW1为奇地址(A0=1,AT机中为21H/A1H),OCW2~OCW3为偶地址(A0=0,AT机中为20H/A0H)。操作命令字(OCW1~OCW3)1.OCW1中断屏蔽命令字IMR,当其中某位置1时,对应的IR请求被屏蔽。例:使主8259的IR5屏蔽,程序为:OCW1EQU21H;主8259OCW1的地址INAL,OCW1;读出IMRORAL,00100000B;屏蔽IR5OUTOCW1,AL操作命令字(OCW1~OCW3)2.OCW2设置中断优先级循环方式和中断结束方式P.2413.OCW3多功能操作命令字操作命令字(OCW1~OCW3)3.OCW3可以设置对8259内部寄存器读出命令例:读IRROCW3EQU20HIRREQUOCW3ISREQUOCW3MOVAL,0AH;读出命令,P=0,RR=1,RIS=0,选IRROUTOCW3,ALINAL,IRR;在AL中读得IRR的值操作命令字(OCW1~OCW3)3.OCW3可以设置对8259内部寄存器读出命令例:读ISROCW3EQU20HIRREQUOCW3ISREQUOCW3MOVAL,0BH;读出命令,P=0,RR=1,RIS=1,选ISROUTOCW3,ALINAL,ISR8259A应用举例PC/AT中,8259的使用情况为:•2片8259级联,提供15级向量中断。从片的INT接主片的IR2。•端口地址:主片20H、21H,从片A0H、A1H。•主片和从片均采用边沿触发。•采用全嵌套优先级排列方式•采用非缓冲方式,主片接+5V,从片接地。•主片的类型码为08H~0FH,从片的类型码为70H~77H。8259A应用举例8259A应用举例ICW1AEQU20H;主片端口地址ICW2AEQUICW1A+1ICW3AEQUICW2AICW4AEQUICW2AICW1BEQU0A0H;从片端口地址ICW2BEQUICW1B+1ICW3BEQUICW2BICW4BEQUICW2B;-----------主片8259A------------MOVAL,11H;ICW1,边沿触发,多片,需ICW4OUTICW1A,ALNOP;I/O端口延时MOVAL,08H;ICW2,中断类型码OUTICW2A,ALNOPMOVAL,04H;ICW3,IR2接从片OUTICW3A,ALNOPMOVAL,01H;ICW4,非缓冲,全嵌套,非自动结束OUTICW4A,ALNOP;-----------从片8259A------------MOVAL,11H;ICW1,边沿触发,多片,需ICW4OUTICW1B,ALNOPMOVAL,70H;ICW2,中断类型码OUTICW2B,ALNOPMOVAL,02H;ICW3,INT接主片的IR2OUTICW3B,ALNOPMOVAL,01H;ICW4,非缓冲,全嵌套,非自动结束OUTICW4B,ALNOPPC/AT机主、从8259的初始化程序8259A应用举例8.3中断服务程序的编程中断服务程序的编程原则1)中断是异步发生的,进入响应时并不考虑当前运行状态。因此中断服务程序必须保护现场2)在进入具体中断处理之前要先初始化中断向量,使其指向相应的中断服务程序,但在此之前要先关中断,以防接管中断过程中发生中断3)在中断服务程序入口处要立即开中断,以允许较高优先级的中断产生4)中断服务程序的服务时间要尽量压缩,以免干扰同级或低级中断设备的工作5)由于PC机中8259采用正常结束中断,因此在中断服务程序执行IRET返回前应向8259发结束中断命令EOIMOVAL,20H;使当前ISR中的对应位复位OUT20H,ALIRET6)当编制替代系统原有中断服务程序时,应保存好原中断向量的内容。在应用程序终止前恢复原有的中断向量7)中断服务程序不要使用DOS系统功能调用(INT21H),因为DOS不允许重入中断服务程序的编程原则8)若中断服务程序只为某个应用程序服务,则中断服务程序可以和主程序组装成一个程序一起装入内存,随主程序结束而一起退出内存9)若中断服务程序为多个应用程序服务,则中断服务程序可以与一个初始化程序组装成一个程序一起装入内存,通过初始化程序的执行而将中断服务程序驻留内存中断服务程序的编程原则中断向量表的操作读写转段向量表不能使用MOV指令,而应调用相应的DOS功能•取中断向量预置AH=35H,AL=中断类型号执行INT21H——把类型号为AL的中断向量取出到E
本文标题:微机原理07中断系统资料
链接地址:https://www.777doc.com/doc-3300089 .html