掌握:•中断的基本概念•中断响应的一般过程•中断向量表及其初始化•8088/8086中断系统第6章中断技术引言第6章中断技术CPU中断控制器计数器并行接口DB停车场(1000辆)中断服务程序入口中断请求中断返回主程序一、中断及中断源6-1中断系统的基本概念中断:由于某种事件的发生,使CPU暂时停止正在执行的程序,而转去执行中断服务程序,中断服务结束又返回被中止的程序,这一过程称为中断。CPU#1中断源中断系统中断请求INTR#2中断源#3中断源程序执行过程二、中断系统功能1、允许多个中断源申请中断;2、多个中断源优先级排队;3、实现中断嵌套;4、向CPU提供中断类型码CPU#1中断源中断系统中断请求INTR#2中断源#3中断源6-1中断系统的基本概念三、中断源分类内部中断外部中断异常中断软件中断异常事件引起中断指令引起可屏蔽中断非屏蔽中断INTR中断NMI中断6-1中断系统的基本概念四、中断过程请看下页流程图中断服务入口中断请求中断返回主程序1.中断请求2.中断判优及中断源识别3.中断响应4.中断处理(服务)5.中断返回CPU#1中断源中断系统中断请求INTR#2中断源#3中断源6-1中断系统的基本概念转中断服务程序A保护现场中断服务恢复现场开中断返回有中断?开中断并响应关中断保护断点找中断源A取下一条指令NINTR=1?INTA=0IFF=0堆栈CS:IPSTIIFF=1IRETCS:IP入口中断处理当前指令结束6-1中断系统的基本概念软件判优顺序查询中断请求,先查询的优先级别高硬件判优链式判优、并行判优(中断向量法)五、中断判优——控制方法CPU#1中断源中断系统中断请求INTR#2中断源#3中断源6-1中断系统的基本概念INAL,20HTESTAL,01HJNZ0#TESTAL,02HJNZ1#TESTAL,04HJNZ2#TESTAL,80HJNZ7#1、软件判优输入接口20HD7D6D5D4D3D2D1D0#7#2#1#06-1中断系统的基本概念2、硬件判优----链式菊花链法INTAIREQ1=1INTR&=1≥1DB三态门中断向量码E接口1中断响应&=1≥1接口2IREQ2=1中断请求中断请求三态门中断向量码EDB6-1中断系统的基本概念3、中断优先级控制器6-1中断系统的基本概念六、中断响应过程•向中断源发出INTA中断响应信号(仅对INTR中断)•保护断点,及FLAGS•转中断服务程序入口地址#1中断源中断系统中断请求INTR#2中断源#3中断源INTACPU中断服务入口中断请求中断返回主程序CS:IP6-1中断系统的基本概念七、中断处理过程过程名PROCFAR过程名ENDP“远过程”1.保护现场2.开中断(STI)3.中断处理4.关中断(CLI)5.恢复现场6.中断返回IRET入口中断请求中断返回主程序中断处理6-1中断系统的基本概念中断逻辑8086/8088CPU内部逻辑软件中断指令溢出中断除法错单步中断断点中断n43016-280X86中断系统一、8086/8088中断源类型:中断类型码:内外中断源共计256个中断类型码中断优先级原则:单步最低,内部高于外部、类型码越小优先级越高NMI非屏蔽中断请求中断控制器8259APIC可屏蔽中断请求2INTRINTA6-280X86中断系统二、中断向量与中断向量表•中断向量:中断服务程序的入口地址,为4字节•中断向量表:存放中断向量的内存区域从内存00000H到003FFH,共计1KB中断向量地址•中断向量在中断向量表中的地址=0000:中断类型码×4┇┇0#中断向量0000:0000H0000:0004H0000:0008H0000:03FFH1#中断向量2#中断向量255#中断向量中断向量(入口地址)中断服务程序中断之前需要,要将中断向量放入向量表;中断向量表的初始化:6-280X86中断系统中断向量表地址为:=0000:48H*4=0000:01001000*100=0120H•例:已知:中断类型码为48H的中断源,其中断向量在中断向量表中的地址是多少?•请初始化中断向量表┇┇0#中断向量0000:0000H0000:0004H0000:0008H1#中断向量2#中断向量0000:0120H48#中断向量6-280X86中断系统INT0INT10000:0000H0000:0004H类型0入口类型1入口中断服务程序0000:0120H0121H0122H0123HINT48H1000:2050H中断向量将中断向量1000:2050H送入中断向量表0000:0120H50200010MOVAX,0000HMOVDS,AXMOVSI,2050HMOV[0120H],SIMOVSI,1000HMOV[0122H],SI中断向量表的初始化或用DOS功能6-280X86中断系统•①NMI中断类型码为2,自动产生;•②内部中断CPU硬件产生•③中断指令INTn;指令给出n•④INTR的类型码由外设或中断控制器提供关键点:CPU如何得到中断类型码三、8086中断响应过程:当INTR=1,CPU响应中断:•向中断源发出INTA=0中断响应信号,•保护断点,及FLAGS•读取中断类型码,转中断服务程序入口地址6-280X86中断系统外设⑤CPU:中断向量码×4;找到中断入口地址;执行中断服务程序。①中断产生;②中断申请;③中断响应;④读取中断类型码;DBINTRCPUINTA①②③④⑤INTR中断过程:0#中断向量1#中断向量2#中断向量255#中断向量0000:0000H0000:0004H0000:0008H0000:03FFH中断向量表中断服务程序中断向量:中断控制器类型码中断响应时序(可屏蔽中断)INTACLK通知外设中断请求已被接受CPU读取外设送出的中断类型码当外设使INTR=1时:若CPU开中断(IF=1)则响应,发出INTA若CPU关中断(IF=0)则CPU不响应。6-280X86中断系统8259A8086CPU中断控制电路中断类型码INTRINTAIR0IR1IR76-3可编程中断控制器8259ACS12345678910111213142827262524232221201918171615WRRDD7D6D5D4D3D2D1D0CAS0CAS1GNDVCCA0INTAIR7IR6IR5IR4IR3IR2IR1IR0INTSP/ENCAS28259A8086CPU中断控制电路中断类型码INTRINTAIR0IR1IR71、功能•单片8259A可对8个中断源控制,9片级联可扩展到64级;•能向CPU提供中断类型码;•可通过编程选择多种工作方式6-3可编程中断控制器8259A6-3可编程中断控制器8259A二、内部结构IR0IR1IR7INTINTAD7~D0RDWRA0CSCAS0CAS1CAS2SP/EN数据总线缓冲器读/写逻辑级连缓冲/比较器在服务寄存器ISR(8)优先权电路PR(8)中断请求寄存器IRR(8)中断屏蔽寄存器IMR(8)控制逻辑•IRRi=1表示外设中断请求•IMRi=0该位允许中断,IMRi=1,该位被屏蔽•ISRi=1该位正在服务,该位中断处理结束ISRi=01、A0----端口选择,接CPU低位地址线。A0=0----偶端口地址;A0=1----奇端口地址。IR0~IR7译码器A1A0A14A138088CPUA15DB8位8259ACSA06-3可编程中断控制器8259A三、常用引脚介绍2、CAS2~CAS0----级联信号线用作主片时,为输出线;用作从片时,为输入线;IR0IR4IR6IR7IR1IR2IR3IR5CAS2~CAS0INTADBINT主IR0IR4IR6IR7IR1IR2IR3IR5CAS2~CAS0INTADBINT从INTRINTADB问题:5片级连可允许接收多少个中断源?6-3可编程中断控制器8259A3、SP/EN---主从控制/允许,双向;•输入方向:SP=1,则为主片SP=0,则为从片IR0IR4IR6IR7IR1IR2IR3IR5CAS2~CAS0INTADBINT主IR0IR4IR6IR7IR1IR2IR3IR5CAS2~CAS0INTADBINT从SP/EN+5VSP/EN地CPU的INTR端INTADB6-3可编程中断控制器8259A•输出方向:用于缓冲器方式6-3可编程中断控制器8259AIR0IR4IR6IR7IR1IR2IR3IR5CAS2~CAS0INTADBINT主IR0IR4IR6IR7IR1IR2IR3IR5CAS2~CAS0INTADBINT从SP/ENSP/ENINTRINTADBBTOEABTOEA8286828611缓冲方式下的主从片区分由ICW4确定•输出方向:用于缓冲器方式IR0IR4IR6IR7IR1IR2IR3IR5INTAINT8259AIRRISRIMR1DB中断类型码1四、8259A的工作流程CPUINTRINTAISRi复位:在AEOI方式,当第二个INTA结束时;其它情况,在IRET前,发EOI命令,使ISRi复位。①②③④⑤⑥6-3可编程中断控制器8259A中断服务程序0五、8259A的中断方式3、屏蔽中断源的方式1、中断优先级管理方式2、中断结束方式4、中断触发方式6-3可编程中断控制器8259A8259A8086CPU中断控制电路中断类型码INTRINTAIR0IR1IR71、中断优先级管理方式1)全嵌套方式(缺省),固定优先级,IR0最高,IR7最低IR7IR6IR5IR4IR3IR2IR1IR0最高最低DBIR0IR1IR2INTIR3IR4IR5INTAIR6IR7时钟键盘用户异步通讯COM1硬盘软盘打印机6-3可编程中断控制器8259A2)特殊全嵌套方式:(级连时用于主片)与完全嵌套方式类似,但允许高级或同级中断;同级指来自同一从片上的中断请求IR0IR4IR6IR7IR1IR2IR3IR5CAS2~CAS0INTAINT8259AIR0IR4IR6IR7IR1IR2IR3IR5CAS2~CAS0INTAINT8259A主从6-3可编程中断控制器8259A中断结束:只有从片所有的中断结束时,才能向主片发中断结束命令3)优先级自动循环方式:初始队列IR0最高,IR7最低,当任何一级中断被处理后则其优先级变为最低,IR0IR1IR2IR3IR4IR5IR6IR7IR4IR5IR6IR7IR0IR1IR2IR3中断被响应,则级别变最低4)优先级特殊循环方式:编程指定初始队列最低优先级,其它依次排列(级别最高)(级别最低)(级别最低)(级别最高)6-3可编程中断控制器8259A6-3可编程中断控制器8259A2、中断结束方式•分为:正常中断结束•自动中断结束IR0IR4IR6IR7IR1IR2IR3IR5INTAINTISR10ISR-中断服务寄存器•ISRi=“1”,正在为IR2服务•ISRi=“0”,表示服务结束;IR0IR4IR6IR7IR1IR2IR3IR5INTAINT8259AISR10121)中断自动结束方式(AEOI命令方式):第二个INTA的后沿使8259A优先级最高的ISRi=0。适用于无中断嵌套的系统CPUINTRINTA6-3可编程中断控制器8259AIR0IR4IR6IR7IR1IR2IR3IR5INTAINT8259AISR10EOI命令2)正常中断结束方式(EOI命令方式):中断返回IRET之前向8259A发出中断结束命令,分为普通EOI命令和特殊EOI命令::中断服务程序MOVAL,20HOUT20H,ALIRET6-3可编程中断控制器8259A•正常EOI命令:使优先级最高的ISRi=0(最后一次响应和处理的中断),适用于完全嵌套方式下的中断结束。•特殊EOI命令:指定所清除的ISR位,处于从片的8259A没有工作在完全嵌套方式时使用。RSLEOI00L2L1L0OCW2特殊方式IR编码000对应IR0端001对应IR1端010对应IR2端011对应IR3端100对应IR4端101对