四川大学
电子信息
学院
微机
原理
ppt
11
中断
第 10章,中断与DMA技术,第10章:中断与DMA技术,重点和难点:中断处理过程、内部中断和外部中断的特点及应用场合;中断矢量和中断矢量表 8259A可编程中断控制器的功能与工作过程、特点、中断触发方式和中断响应过程、8259A的编程控制与设计应用 可编程DMA控制器8237的编程与应用,10.1 中断的基本概念(concept of Interrupt),中断,指CPU在正常运行程序时,由于:1.内部外部事件2.程序的预先安排CPU暂停正在运行的程序,转到为内部外部事件或为预先安排事件服务的程序中去服务完毕,再返回,继续执行被暂停的程序。,现实生活中的中断事例,中断的基本概念,随着计算机的发展,中断系统不仅能解决前述快速主机和慢速外设的矛盾,还能实现如下一些操作。1分时操作。有了中断系统,CPU可以命令多个外部设备同时工作,这样就大大提高了CPU的吞吐率。(中断源:外部设备)2实现实时处理。当计算机用于实时控制,系统要求计算机为它服务是随机的,若没有中断系统是很难实现的。(中断源:实时时钟)3故障处理。计算机在运行过程中,往往会出现一些故障,CPU可以转去执行故障处理程序,自行处理故障而不必停机。(中断源:故障源),中断源,中断源:引起中断的原因或发出中断申请的来源。中断源有以下几类:1外部设备请求中断;2实时时钟请求中断;3故障请求中断;4.由INT n 引起的中断。,注意:外部事件引起中断具有随机性,内部(软件中断),中断处理过程(以外设请求中断为例),一个完整的中断处理过程应该包括:1)中断请求2)中断排队3)中断响应4)中断处理5)中断返回,1)中断请求:,中断源,CPU提出,中断请求发生的条件:外设工作已就绪系统允许外设发终端请求,中断输入接口,2.中断排队,解决办法:预先安排一个优先级顺序,当多个中断源同时申请中断时,即按此优先级顺序进行排队,等候CPU处理。硬件方法:速度快,需要增加硬设备(8259中断控制器)采用软件方法(查询):无需增加硬设备,速度慢。,问题的提出:多个中断源同时提出中断申请,怎么办?,软件查询的接口电路和程序流程,相应的查询程序,XORAL,AL;CF清0 IN AL,20H;输入中断请求触发器的状态 RCL AL,l;左移一位,检测是否有请求 JC POW;有,转相应服务程序 RCL AL,l;否,检测下一位 JC DISS.POW:DISS:,软件查询,查询方法的优点是:(1)询问的次序,即是优先权的次序。显然,最先询问的,优先权的级别最高。(2)省硬件。不需要有判断与确定优先权的硬件排队电路。缺点是:由询问转至相应的服务程序入口的时间长,尤其是在中断源较多的情况下。,CPU收到一个当前申请中断的中断源中优先级别最高的中断请求信号,如果允许CPU响应中断(IF=1),在执行完一条指令后,就中止执行现行程序,而响应中断申请。中断响应时CPU所做的工作1.CS 入堆栈2.IP 入堆栈3.FR 入堆栈4.IF=05.寻找中断服务程序入口地址,3)中断响应,软件查询:硬件方式:矢量中断方式,获取中断源送来的中断矢量),寻找中断服务程序入口地址的方法分两种。1.查询中断方式:即为上述的软件方法2.矢量中断方式:当CPU响应中断后,由提出中断请求的中断源向CPU发去一个中断矢量,CPU根据这个中断矢量找到中断程序入口地址,而转到相应的中断服务程序。以Intel为CPU的PC系列微型计算机系统就采用矢量中断方式。,注意:矢量中断与中断矢量不同哟!,中断处理,即执行中断服务程序。保护现场,把中断服务程序中所要使用到的寄存器内容保护起来将寄存器内容压入堆栈,然后才进行与此次中断有关的相应服务处理。处理完毕要恢复现场,即恢复中断前各寄存器的内容。如果在中断服务程序中允许嵌套(可屏蔽中断方式时),还应用STI指令将IF=1(即开中断)。,4).中断处理,注意:保护现场与保护断点不同哟!,保护与恢复现场,保护现场:用PUSH指令将所有在中断服务子程序中用到的寄存器压入堆栈恢复现场:在中断服务子程序结束前(IRET指令前)用POP指令把刚才压入堆栈的寄存器弹回,别忘了堆栈”先进后出,后进先出的”原则哟!,通常中断服务程序的最后一条指令是一条中断返回指令(IRET)。CPU执行这条指令时,把原来程序被中断的断点地址从堆栈中弹回CS和IP中,原来的FR弹回FR(恢复断点)。被中断的程序就可以从断点处继续执行下去。CPU从中断服务程序又回到了被中断的主程序。,5).中断返回,中断处理过程,保护断点,硬件完成,恢复断点,IRET,PC系列机的中断结构,PC系列机采用矢量型的中断结构,共有256(0-255)个中断矢量号,又称中断类型号。这种中断结构既简单又灵活,而且响应速度快。PC机 的中断源有两类:1.内部中断,它是由CPU在程序中执行一条INT n中断指令而引起的内部中断;2.外部中断,它是由外界中断请求输入信号启动的中断。,不会忘掉INT n 吧!,PC机的中断结构,内部中断除法错中断指令中断溢出中断单步中断外部中断非屏蔽中断可屏蔽中断,内部中断,执行INT n(或INT 3),INTO等指令,或者是由于除法出错,或者是进行单步操作引起的中断。1.CPU执行 INT n指令,产生矢量地址号为 n的中断。这里简称为 n号矢量中断。2.CPU执行 INT 3指令而产生的中断,称为断点中断。3.当CPU内部溢出标志位OF被置1,执行一条溢出中断指令INTO,会产生4号中断。,例如:DEBUG.EXE调试程序的运行命令G设置的断点,就是利用INT 3指令实现的,内部中断,4.除法出错中断。执行DIV(IDIV)指令时,若所得的商数超出了目标寄存器的容量,比如用数值0作为除数,这种非法操作会引起0号矢量中断。5.单步中断。当将CPU内标志寄存器的单步标志TF位置为1后,CPU每执行完一条指令,会产生1号矢量中断。,例如:DEBUG.EXE调试程序的单步命令T就利用单步中断实现对程序的单步调试,内部中断,单步时由TF=0/1来控制,没有专门的指令使TF=0/1 但可通过下列程序实现:PUSHF;FR压栈 POP AX;FR内容弹出到AX OR AX,0100H;使AX中对应TF的位置1,;(将TF标志清0时为;AND AX,0FEFFH)PUSH AX;修改后的AX内容压入栈 POPF;使对应TF的位置1后的栈顶弹回FR,内部中断的特点,中断矢量号是由CPU内部自动提供;不执行INTA总线周期;除单步中断外,所有内部中断都不可以屏蔽,除单步外,所有内部中断的优先级别均高于外部中断。软中断已失掉了随机性。,外部中断特点与之对应,外部中断,外部中断(硬件中断):由外部设备或中断源申请的中断。1).非屏蔽中断:由引脚NMI 申请的中断;具有随机性;2).可屏蔽中断:由引脚INTR申请的中断;具有随机性;IF=0/1 时屏蔽/允许中断;中断程序入口地址由查询程序(查询式中断)或中断源(矢量中断)提供。,CPU在执行完一条指令后响应外部中断,非屏蔽中断,微处理器无法禁止非屏蔽中断请求信号非屏蔽中断主要用于处理系统的紧急故障。例如:电源掉电前的数据保护存储器奇偶校验错或I/O通道RAM偶校验错的处理,NMI,可屏蔽中断,INTR 中断控制器8259A的INT输出信号驱动。8259A根据优先权和屏蔽状态,决定是否发出INT信号到CPU的中断请求端(INTR)。8088/8086CPU是否响应INTR的请求,取决于中断标志IF的状态。IF标志控制可屏蔽中断是否允许响应;向量号来自中断源。,注意:这是我们研究的重点和难点哟!,优先级别,8086/8088中断的优先级别按下列顺序排列:除法错、INT n、INTO NMI INTR 单步,高低,中断矢量和中断矢量表,8088的中断系统采用向量中断机制处理256个中断,用中断矢量号:0 255区别0255中每一种中断矢量号对应一个中断服务程序。中断服务程序的入口地址(首地址)存放在中断矢量表内,每个入口地址占用4个字节,低字是偏移地址、高字是段地址。,中断矢量和中断矢量表,如何找到中断服务程序入口地址?,00000H,FFFFFH,003FFH,中断矢量号取值为:0255(0FFH),0号中断服务程序,中断矢量和中断矢量表,中断矢量号为n(n=0-255)对应的中断服务程序的入口地址在哪里?矢量表中地址为4n开始的四个字节单元中,两个低字节的内容送IP寄存器 即:IP(4n,4n1);两个高字节单元内容装入代码段寄存器CS,即:CS(4n2,4n3)。,如何找到中断服务程序入口地址?,例,键盘中断的矢量号为09H,键盘中断对应的中断矢量位于:0000:0024H开始的4单元(因为09H4=24H)若其中断服务程序的入口逻辑地址为:0BA9H:0125H 0000:0024H开始的4单元的内容为:0024H 25 0025H 01 0026H A9 0027H 0B,中断矢量的装入,直接装入调dos功能装入:INT 21H中的35H(取出)和25H(装入),例:假如中断类型号为60H,中断服务程序的段基址为SEG_INTR,地址偏移量为OFFSET_INTR,装入中断矢量表的程序如下:,中断矢量的直接装入,CLI;关中断CLD;地址增量MOVAX,0MOVES,AX;ES=0MOVDI,460H;矢量表指针送DIMOVAX,OFFSET_INTRSTOSW;中断程序偏移地址送DIDI+1;且DI+2MOVAX,SEG_INTR;STOSW;段基址送DI+2DI+3STI;开中断,8259A可编程中断控制器,Intel 8259A是可编程中断控制器用于扩展Intel 8080/8085、8086/8088、80286/80386 可管理的可屏蔽中断数。8259A的基本功能:1.一片8259A可以管理8级中断 2.可扩展至64级 3.每一级中断都可单独被屏蔽或允许 4.在中断响应周期,可提供中断矢量号 5.可通过编程选择多种工作方式,8259A的框图和引脚,D7D0,INTA,INT,中断请求寄存器,中断屏蔽寄存器,数据总线缓冲器,IR0,IR7,读/写控制逻辑,级联缓冲器比较器,RD,WR,A0,CS,CAS0,CSA1,CAS2,SP/EN,优先权判别电路,中断服务寄存器,控制逻辑,一、8259A的框图,8259A的内部寄存器,中断请求寄存器IRR锁存外设送来的8条中断请求信号IR0IR7若IRi上由请求,IRR相应位为1,为0表示无请求,8259A的内部寄存器,中断屏蔽寄存器IMR设置中断请求信号IRi的屏蔽信号IMRi位为1表示IRi中断被屏蔽(禁止)为0表示允许中断锁存在IRR中的外部设备的中断请求与中断屏蔽寄存器IMR(8位)相“与”,送优先权判别电路,8259A的内部寄存器,中断服务寄存器ISR保存正在被8259A服务着的中断级ISRi位为1表示对应的中断源正在被服务;ISRi为0表示未进行中断服务。,ISR用来存放正在被服务的所有中断级,包括尚未服务完而中途被更高优先级打断的中断级。,8259A的内部寄存器,优先权判决电路通过对8259A编程进行设定和修改优先级别。几个中断请求同时出现时,由优先权判决电路,根据控制逻辑规定的优先级别和IMR的内容,判断出优先级别最高的中断请求,CPU首先响应优先级最高的中断请求。把优先权最高的IRR中置1位送入ISR。,8259A的内部寄存器,控制逻辑向CPU发INT信号;接收CPU发出INTA*信号.包含:一组初始化命令字寄存器ICW1ICW4,一组操作命令字寄存器OCW1OCW3。8259A工作前,初始化8259A(写ICW1 ICW 4)。操作命令则用来在过程中修改中断管理规则。,整个工作过程中将保持不变。,8259A的内部寄存器,数据总线缓冲器8位的双向三态缓冲器。用作 8259A与系统数据总线从D7D0的接口,作用:输入控制信息(ICW、OCW)b.输出状态信息(IMR、ISR、IRR)c.输出中断类型号,8259A的内部寄存器,读写控制逻辑 接收来自CPU的端口的IOR*/IOW*命令 访问片内某个寄存器:由CS*芯片选通信号高位地址线决定 在CPU写入8259A时,执行OUT指令使WR*有效,写入命令字ICWi和OCWi;在CPU读8259A时,执行IN指令使RD*有效,读入IRR,ISR或IMR寄存器信息。,8259A的内部寄存器,级联缓冲器/比较器级联时,存放和比较各个从8259A的设备标志ID码,包括:级联线:CAS0CAS2;主从设备设定/缓冲器读写线:SP*/EN*非缓冲时:主片 SP=1 从片 SP=0带缓冲时:EN*控制8286的发送、接收,二、8259A的引脚,8259 引脚,中断触发方式和中断响应过程,边沿触发方式8259A将中断请求输入端出现的上升沿作为中断请求信号,