第七章1.什么叫中断?什么叫可屏蔽中断和不可屏蔽中断?答:当CPU正常运行程序时,由于微处理器内部事件或外设请求,引起CPU中断正在运行的程序,转去执行请求中断的外设(或内部事件)的中断服务子程序,中断服务程序执行完毕,再返回被中止的程序,这一过程称为中断。可屏蔽中断由引脚INTR引入,采用电平触发,高电平有效,INTR信号的高电平必须维持到CPU响应中断才结束。可以通过软件设置来屏蔽外部中断,即使外部设备有中断请求,CPU可以不予响应。当外设有中断申请时,在当前指令执行完后,CPU首先查询IF位,若IF=0,CPU就禁止响应任何外设中断;若IF=1,CPU就允许响应外设的中断请求。不可屏蔽中断由引脚NMI引入,边沿触发,上升沿之后维持两个时钟周期高电平有效。不能用软件来屏蔽的,一旦有不可屏蔽中断请求,如电源掉电等紧急情况,CPU必须予以响应。2.列出微处理器上的中断引脚和与中断有关的指令。答:INTR:可屏蔽中断请求输入引脚。NMI:不可屏蔽中断请求输入引脚INTA:可屏蔽中断响应引脚INTn:软件中断指令,其中n为中断类型号INTO:溢出中断,运算后若产生溢出,可由此指令引起中断。CLI:中断标志位IF清0STI:置位中断标志位为13.8086/8088系统中可以引入哪些中断?答:(1)外部中断两种外部中断:不可屏蔽中断NMI和可屏蔽中断INTR(2)内部中断内部中断又称软件中断,有三种情况引起:①INTn:中断指令引起的中断②CPU的某些运算错误引起的中断:包括除法错中断和溢出中断③由调试程序debug设置的中断:单步中断和断点中断。4.CPU响应中断的条件是什么?简述中断处理过程。答:CPU响应中断要有三个条件:外设提出中断申请;本中断位未被屏蔽;中断允许。可屏蔽中断处理的过程一般分成如下几步:中断请求;中断响应;保护现场;转入执行中断服务子程序;恢复现场和中断返回。CPU在响应外部中断,并转入相应中断服务子程序的过程中,要依次做以下工作:⑴从数据总线上读取中断类型号,将其存入内部暂存器。⑵将标志寄存器PSW的值入钱。⑶将PSW中的中断允许标志IF和单步标志TF清0,以屏蔽外部其它中断请求,避免CPU以单步方式执行中断处理子程字。⑷保护断点,将当前指令下面一条指令的段地址CS和指令指针IP的值入栈,中断处理完毕后,能正确返回到主程序继续执行。⑸根据中断类型号到中断向量表中找到中断向量,转入相应中断服务子程序。⑹中断处理程序结束以后,从堆栈中依次弹出IP、CS和PSW,然后返回主程序断点处,继续执行原来的程序。5.中断服务子程序中中断指令STI放在不同位置会产生什么不同结果?中断嵌套时,STI指令应如何设置?答:由于响应中断时CPU自动关闭中断(IF=0),故在中断服务子程序中STI指令后方可实现中断嵌套。一般在中断服务子程序中保护现场后即设置开中断指令STI(IF=1),以便实现中断嵌套。6.中断结束命令EOI放在程序不同位置处会产生什么不同结果?答:中断结束命令EOI后,清除中断服务寄存器中的标志位,即允许响应同级或低级中断,为避免错误,一般将中断结束命令EOI置于中断服务子程序结束前。7.中断向量表的功能是什么?答:中断向量表又称中断服务程序入口地址表。将每个设备的中断服务程序入口地址(矢量地址)集中,依次放在中断向量表中。当CPU响应中断后,控制逻辑根据外设提供的中断类型号查找中断向量表,然后将中断服务程序的入口地址送到段寄存器和指令指针寄存器,CPU转入中断服务子程序,这样可大大加快中断处理的速度。8086/8088系统允许处理256种类型的中断,对应类型号为0~FFH。在存储器的00000H~003FFH,占1K字节空间,用作存放中断向量。每个类型号占4个字节,高2个字节存放中断入口地址的段地址,低2个字节存放段内偏移地址。8.假定中断类型号15的中断处理程序的首地址为ROUT15,编写主程序为其建立一个中断向量。PUSHESMOVAX,0MOVES,AXMOVDI,54H;15H*4MOVAX,OFFSETROUT15;中断处理程序的偏移→AXCLDSTOSWMOVAX,SEGROUT15;中断处理程序的段地址→AXSTOSWPOPES9.8086/8088CPU如何获得中断类型号?答:对于内部中断①INTn:n即为中断类型号②除法错中断自动获得类型号0,INTO溢出中断自动获得中断类型号4③单步中断自动获得类型号1,断点中断自动获得类型号3。对于外部中断:①不可屏蔽中断NMI:自动获得中断类型号2②可屏蔽中断INTR:CPU响应可屏蔽中断,对中断接口电路发出两个中断响应信号INTA,中断接口电路收到第二个INTA以后,通过数据线向CPU送中断类型号。10.给定SP=0100H,SS=0500H,PSW=0240H,在存储单元中已有内容为(00024H)=0060H,(00026H)=1000H,在段地址为0800H及偏移地址为00A0H的单元中有一条中断指令INT9,试问执行INT9指令后,SP、SS、IP、PSW的内容是什么?栈顶的三个字是什么?答:执行INT9指令,标志寄存器PSW、下一条指令的段地址CS和指令指针IP的值分别入栈,PSW中的中断允许标志IF和单步标志TF清0,中断向量表的中断入口地址送CS和IP,转入中断服务子程序。所以此时SP=00FAH,SS=0500H,CS=1000H,IP=0060H,PSW=0040H。栈顶的三个字是:(0500H:00FAH)=00A2H、(0500H:00FCH)=0800H、(0500H:00FEH)=0240H标志寄存器PSWCFXPFXAFXZFSFTFIFDFOFXXXX0000001001000000执行INT9前0000001000000000执行INT9后PSW=0040H11.8259A优先权管理方式有哪几种?中断结束方式又有哪几种?答:8259A优先权管理方式有如下4种:(1)全嵌套方式此方式下,中断优先级分配固定级别0~7级,IR0具有昀高优先级,IR7优先级昀低。(2)特殊全嵌套工作方式此种工作方式主要用于8259A级联情况。此方式与全嵌套工作方式基本相同,区别在于当处理某级中断时,有同级中断请求进入,8259A也会响应,从而实现了对同级中断请求的特殊嵌套。(3)优先级自动循环方式优先级可以改变,初始优先级次序为IR0~IR7,当任何一级中断被处理完后,它的优先级别变为昀低,将昀高优先级赋给原来比它低一级的中断请求。(4)优先级特殊循环方式特殊循环方式下,初始时优先级由程序指定,而不是固定的。8259A中断结束方式有如下3种:(1)普通EOI结束方式在全嵌套工作方式下,任何一级中断,处理结束返回上一级程序前,CPU向8259A传送EOI结束命令字,8259A收到EOI结束命令后,自动将ISR寄存器中级别昀高的置1位清0。(2)特殊EOI结束方式在非全嵌套工作方式下,中断服务寄存器是无法确定哪一级中断为昀后响应和处理的,此时要采用特殊SEOI结束方式。CPU向8259A发特殊EOI结束命令字,命令字中将当前要清除的中断级别也传给8259A,此时8259将ISR寄存器中指定级别的对应位清0。(3)自动EOI结束方式在自动AEOI方式中,任何一级中断被响应后,ISR寄存器对应位置1,但在CPU进入中断响应周期,发第二个INTA脉冲后,自动将ISR寄存器中对应位清0。12.单片8259A在全嵌套中断工作方式下,要写哪些初始化命令字及操作命令字?答:初始化命令字需要写:ICW1,ICW2,ICW4。操作命令字需要写:OCW1中断屏蔽操作命令字(根据需要,若不需要可不写)OCW2优先权循环方式和中断结束方式操作字13.系统中新增加一个中断源,在软件上应增加哪些内容,此中断系统才能正常工作?答:需要确定中断源的中断类型,然后将中断服务程序的入口地址放入中断向量表中。编写相应的中断服务程序。14.系统中有3个中断源,从8259A的IR0、IR2、IR4端引入中断,以边沿触发,中断类型号分别为50H、52H、54H,中断入口地址分别为5020H、6100H、3250H,段地址为1000H。使用完全嵌套方式,普通EOI结束,试编写初始化程序,使CPU能正确响应任何一级中断;并编写一段中断服务子程序,保证中断嵌套的实现和正确返回。答:;初始化程序设8259A的端口地址为20H和21H;设置中断向量表MOVAX,1000H;段地址MOVDS,AXMOVDX,5020H;偏移地址MOVAL,50H;中断类型号MOVAH,25HINT21H;写50H的中断入口地址MOVDX,6100H;偏移地址MOVAL,52H;中断类型号INT21H;写52H的中断入口地址MOVDX,3250H;偏移地址MOVAL,54H;中断类型号INT21H;写54H的中断入口地址;8259A初始化命令字MOVAL,13H;定义ICW1,单片,边沿触发OUT20H,ALMOVAL,50H;定义ICW2,中断号50H~57HOUT21H,ALMOVAL,01H;定义ICW4,完全嵌套,非缓冲,普通EOIOUT21H,ALMOVAL,0EAH;定义OCW1,屏蔽IR1,3,5,6,7OUT21H,AL;中断服务子程序PUSHAX;保护现场……STI;开中断……;中断处理CLI;关中断MOVAL,20H;定义OCW2,普通EOI结束命令OUT20H,AL……POPAX;恢复现场IRET;中断返回15.如外设A1、A2、A3、A4、A5按完全嵌套优先级排列规则,外设A1的优先级昀高,A5昀低。若中断请求的次序如下所示,试给出各外设的中断处理程序的次序。(假设所有的中断处理程序开始后就有STI指令)(1)外设A3和A4同时发出中断请求;(2)在外设A3的中断处理中,外设A1发出中断请求;(3)在外设A1的中断处理未完成前,发出EOI结束命令,外设A5发出中断请求答:外设的中断处理程序的次序为:A3→A1→A3→A4→A516.某系统中有3片8259A级联使用,1片为8259A主片,2片为8259A从片,从片接入8259A主片的IR2和IR5端,并且当前8259A主片的IR3及两片8259A从片的IR4各接有一个外部中断源。中断类型基号分别为80H,90H,A0H,中断入口段地址为2000H,偏移地址分别为1800H,2800H,3800H,主片8259A的端口地址为F8H,FAH。一片8259A从片的端口地址为FCH,FEH,另一片为FEECH,FEEEH。中断采用电平触发,全嵌套工作方式,普通EOI结束。(1)画出硬件连接图。(2)编写初始化程序。答:SP/ENSP/ENCASCAS00CASCAS11CASCAS22CASCAS00CASCAS11CASCAS22CASCAS00CASCAS11CASCAS22CSACSA00DD77~D~D00INTARDWRINTINTARDWRINTAA11DD77~D~D00INTARDWRINTRINTARDWRINTRGNDGNDGNDGNDSP/ENSP/ENSP/ENSP/ENIRIR44IRIR55IRIR33IRIR22IRIR44INTINTINTINT2#2#从从8259A8259A1#1#从从8259A8259A主主8259A8259AVVCCCC硬件连接图硬件连接图(1)中断向量表形成MOVAX,2000HMOVDS,AX;DS中为段地址MOVDX,1800H;DX中为偏移地址MOVAL,83H;中断类型号为83HMOVAH,25HINT21H;设置类型号83H的中断向量MOVDX,2800HMOVAL,94HINT21H;设置类型号94H的中断向量MOVDX,3800HMOVAL,0A4HINT21H;设置类型号A4H的中断向量(2)主片8259A初始化编程:端口地址为F8H和FAHMOVAL,00011001B(19H);定义ICW1,主片级联,电平触发OUT0F8H,AL;发ICW1命令MOVAL,80H