1张向东计算机科学与技术系第7章中断27.1中断系统的基本概念7.1.1什么叫中断?中断申请主程序中断服务程序返回中断示意图所谓中断,是指这样一个过程:当CPU正在执行程序过程中,由于某一突然事件的发生,暂时中止正在执行的程序,转去处理突然发生的事件(执行中断服务程序),处理完毕,再返回原来被中止的程序继续运行。37.1.2应用中断技术的优点1.实现CPU与外设的并行工作,提高了CPU的效率。NYREADY?输入状态信息输入数据查询方式的数据输入中断方式的数据输入外设请求中断INTR有效主程序中断服务程序输入数据外设准备数据5INTn指令中断逻辑非屏蔽中断请求中断控制系统(8259A)INT3指令INTO指令单步中断除数为0中断…可屏蔽中断请求NMIINTR硬件中断软件中断7.28086CPU的中断系统7.2.1中断类型8086能处理256种中断,分为两大类:外部中断和内部中断。其中断分类如右图8086的中断分类61.外部中断(硬件中断)(1)非屏蔽中断NMI(类型号为2)有效,不受FR中IF的影响,常用于处理系统的重大故障。7(2)可屏蔽的中断INTR高有效,CPU是否响应,取决于FR中IF的状态。常用于各种外设的中断。82.内部中断(软件中断)通常由三种情况引起:(1)INTn指令中断(n为中断类型号)(2)处理CPU某些错误的中断除法错中断(中断类型号为0)溢出中断(INTO)(中断类型号为4)9(3)为调试程序设置的中断①单步中断当FR中TF=1时,每执行一条指令,CPU产生类型为1的单步中断。②断点中断设置断点实际上是把指令“INT3”插入到程序中,CPU每执行到断点处的“INT3”指令,便产生类型为3的中断。107.2.2中断优先级8086系统中,中断优先级的次序为:高低内部中断(除法错、INTO、INTn)NMIINTR单步中断117.2.3中断向量表CPU响应中断后,如何得到中断服务程序的入口地址(中断向量),转入到中断服务程序?8086CPU通过建立中断向量表的方法解决。12中断向量(中断服务程序入口地址)在表中的地址=中断类型号×4溢出中断供用户定义的中断(共224个)中断向量表0000:0014H0000:0013H0000:0010H0000:000FH0000:000CH0000:000BH0000:0008H0000:0007H0000:0004H0000:0003H0000:0000H类型5类型2550000:007FH0000:007EH0000:03FFHCSIPCSIPCSIPCSIPCSIPCSIPCSIP专用的中断(共5个)保留的中断(共27个)类型32类型31类型0类型4类型3类型2类型1除数为0中断非屏蔽中断单步中断断点中断13例1某一中断源的中断类型码为45H,则该中断源的中断向量在中断向量表的位置是:45H×4=00114H地址存储单元内容00114H20H00115H10H00116H00H00117H34H00118H若中断向量表部分单元内容如图示,则该中断源的中断向量为:3400H:1020H。即该中断服务程序的入口地址为35020H。14例2:地址存储单元内容0003CH80H0003DH27H0003EH00H0003FH00H00040H某一中断源的中断类型码为0FH,该中断源的中断向量为:0000:2780H。则中断向量表中从0000:003CH单元开始顺序存放:80H,27H,00,00如图示。157.2.4中断向量的装入BIOS负责0~1FH共32个中断向量的装入。用户若想装入自己的中断向量到向量表中的,可用以下方法:161.用STOS指令填空中断向量表假设类型号为60H的中断向量为CLICLDMOVAX,0MOVES,AXMOVDI,460H;DI指向表中对应位置MOVAX,OFFSET_INTR;取偏移地址STOSW;AL[DI],AH[DI+1];DI+2DIMOVAX,SEG_INTR;取段基址STOSWSTISEG_INTR:OFFSET_INTR。172.利用MOV指令写入中断向量CLIMOVAX,00HMOVES,AXMOVBX,460H;BX指向表中对应位置MOVAX,OFFSET_INTRMOVES:[BX],AX;装入编程地址MOVAX,SEG_INTRMOVES:[BX+2],AX;装入段基址方法1,2由用户直接操作中断向量表,因此,要熟悉中断向量表的具体组织。183.利用DOS功能调用“INT21H”的AH=25H装入中断向量MOVAL,60H;类型号ALMOVAH,25H;功能号25HAHMOVDX,SEG_INTRMOVDS,DXMOVDX,OFFSET_INTR;DS:DX=中断向量INT21H方法3由DOS功能调用具体实现,中断向量表对用户是透明的。191.取类型号;2.计算向量地址;3.根据向量地址查表,将偏移地址送IP,段基址送CS;4.转入中断服务程序,进行中断处理。7.2.58086CPU转入中断服务程序的过程208086转入中断处理程序的过程1800HF000H00H18H00HF0HPUSHIRET……………例:执行INT21H向量地址=21H4=84HCPUIPCSMEM(4)(1)(2)(3)0:0000H0:0084H0:0087H0:03FFHF000:1800H中断向量表2.计算向量地址;向量地址=21H4=84H3.根据向量地址查表,将偏移地址送IP,段基址送CS;4.转入中断服务程序,进行中断处理。1.取类型号;21H217.2.68086CPU中断响应流程内部中断?NMI?INTR?TF=0?执行下条指令完成当前指令IF=1?标志进栈保存TF,将IF、TF清0断点地址进栈查中断向量表,转中断服务程序保护现场中断服务恢复现场关中断,返回中断响应流程第一个中断响应周期AD7~AD0浮空第二个响应周期,取中断类型码YYYYNNNNYN227.38259A可编程中断控制器在微机系统中,可以使用8259A扩展外部中断,Intel8259A可编程中断控制器,主要有以下功能:233.在中断响应周期,8259A可提供相应的中断类型号。1.1片8259A能管理8级中断,通过级联用9片8259A可以构成64级主从式中断系统。2.每一级中断可以屏蔽或允许。4.可编程使8259A工作在多种不同的方式。247.3.18259A的内部结构与引脚信号INTA控制逻辑中断服务寄存器ISR优先权电路PR中断请求寄存器IRR中断屏蔽寄存器IMR读写控制逻辑级联缓冲比较器数据总线缓冲器D0~D7RDWRCSA0CAS0CAS1CAS2ENSPINTIR0IR1IR7…8259A内部逻辑框图251.数据总线缓冲器8位、双向、三态,是8259A与CPU之间的数据接口。D0~D7直接与CPU数据总线的低8位连结。262.读/写控制逻辑A0:常常与地址信号线A0相连。相连。、的与、WRRDCPUWRRD8259A的两个端口地址CPU通常利用:OUT指令,。配合写入有关的控制字与A0,CSWR。接高位地址的译码输出:CSIN指令,有关寄存器的内容。内部配合读出与A8259A0,CSRD273.中断请求寄存器IRR8位,若IRi有效(“1”,),对应位置“1”,直到IRi得到响应。因此,IRR记录外中断源IRi的请求信息。284.中断服务寄存器ISR8位,当IRi得到响应时,对应位置“1”。ISR记录正在处理的IRi,当中断嵌套时,可能多位置“1”。因此,ISR记录CPU对IRi的响应情况。295.中断屏蔽寄存器IMR8位,某位置“1”,对应IRi禁止产生中断。因此,IMR控制是否对IRi进行屏蔽操作。306.优先权电路实现优先权的判断与处理,采用编码器和比较器电路,如下图所示。8259A中的中断优先权电路317.控制逻辑(1)由IRR和PR的情况,向8259A其它部件发出控制信息。(2)向CPU发出INT信号,接收CPUINTA信号。328.级联缓冲/比较器可以实现8259A的级联,扩展外中断。(1)CAS2、CAS1、CAS0引脚①主8259A:CAS2~CAS0输出,输出被响应的从片的标志码。问题:8259A级联时,如何确定主8259A的IRi接有从片,从片接入主8259A的IRi?338259A从片A8259A主片8259A从片BINTCAS0CAS1CAS2IR0INTCAS0CAS1CAS2IR0INTCAS0CAS1CAS2IR7IR6IR3IR0…SP/ENSP/ENIR7CSA0INTACSA0INTACSA0INTA…IR7SP/EN…IR7ABCBDBGNDGNDVcc②从8259A:CAS2~CAS0输入,接收主片发出的标志码,与自己的标志码比较。若相等,下一个INTA信号到来时,将中断类型号送至数据总线。从片A标志码:011,从片B标志码:11034(2)SP/EN引脚①当8259A工作于非缓冲方式(直接与CPU的DB相连)主片,1SP从片,0SPSP为输入,是主从芯片定义引脚。35②当8259A工作于缓冲方式(通过总线缓冲器与CPU的DB相连)EN为输出,用于CPU与8259A传送数据信息时启动数据总线驱动器。DBDBCPU数据总线驱动器8259AENOE此时,主从芯片的定义由ICW4中的M/S实现。367.3.28259A的中断处理过程下面以8259A单片使用为例,说明其中断处理过程。1、当一条或多条中断请求线IR0~IR7变高时,设置相应的IRR位。2、PR对中断优先权和中断屏蔽寄存器的状态进行判断之后,如某中断优先权最高且为允许中断状态,就向CPU发高电平信号INT,请求中断服务。373、CPU响应中断时,送回应答信号INTA。4、8259A接到来自CPU的第一个信号INTA时,当前中断服务寄存器(ISR)中相应位置位,并把IRR中相应位复位。同时,8259A准备向数据总线发送中断类型号。385、在8259A发送中断类型号的后一个INTA脉冲期间,如果是在AEOI(自动结束中断)方式下,在这个INTA脉冲结束时复位ISR的相应位。在非自动中断结束方式下,ISR相应位要由中断服务程序结束时发出的EOI命令来复位。39中断响应周期8088响应中断,到转入中断处理,要经过两个中断响应周期。T1T2T3T4T1T2T3T4第一个中断响应周期第二个中断响应周期CLKALEINTAAD7~AD0向量类型码第一个INTA信号:将在服务寄存器ISR相应位置位,表示正在为响应的那一级服务;同时将中断请求触发器复位。为本级再次中断请求做好准备。第二个INTA信号:要求8259A输入中断向量类型码。407.3.38259A的工作方式8259A有多种工作方式,这些工作方式可以通过初始化命令字(ICW1ICW4)和操作命令字(OCW1OCW3)来设置。411.引入中断请求的方式边沿触发方式。以上跳沿向8259A请求中断,上跳沿后可一直维持高电平,不会再产生中断。电平触发方式。以高电平申请中断,但在响应中断后必须及时清除高电平,以免引起第二次误中断。中断查询方式。外设通过8259A申请中断,但8259A却不使用INT信号向CPU申请中断,CPU用软件查询确定中断源,并为其服务。422.连接系统总线的方式在大系统中,要求数据总线有总线缓冲器。8259A与这种带总线缓冲器的系统总线连接的方式称缓冲器方式。在小系统中,则8259A不需要总线缓冲器而是将其直接接至数据总线。8259A与这种不需总线缓冲器而直接连到系统总线的方式称非缓冲器方式。433.屏蔽中断源的方式普通屏蔽方式。利用操作命令字OCW1,使屏蔽寄存器IMR中的一位或几位置1来屏蔽一个或几个中断源的中断请求。若要开放某一个中断源的中断请求,则将IMR中相应的位置0。特殊屏蔽方式。在某些场合,在执行某一个中断服务程序时,要求允许另一个优先级比它低的中断请求被响应,此时可采用特殊屏蔽方式。它可通过OCW3的D6D5=11来设定。44