第七章中断系统和中断控制器8259A中断的基本概念8086/8088中断系统可编程中断控制器芯片8259A※7.1中断系统的基本概念一、中断和中断系统1、中断:在微机中,中断是指当CPU执行程序过程中,由于随机的事件(包括CPU内部的和CPU外部的事件)引起CPU暂时停止正在执行的程序,而转去执行一个用于处理该事件的程序----称为中断服务程序(或中断处理程序),中断处理完后又返回被中止的程序断点处继续执行,这一过程就称为中断。2、中断系统通常在计算机的有关部件内,如CPU、外设接口等,添加一些硬件逻辑,构成中断控制逻辑,还在指令系统中,设有一些管理中断的指令,以实现中断功能,此类软硬件的配置称为中断系统。3、中断的好处:分时操作故障处理实时处理二、中断源引起中断的原因,或发出中断请求的来源称为中断源。1.外部设备请求中断:是指系统中外设所发生的中断请求,如键盘、打印机、A/D转换器。2.实时请求中断:实时中断用于实时系统中,在工业控制中经常使用。3.故障请求中断:同机器硬件错误有关的中断系统称谓硬件故障中断。在计算机一些关键部位设有故障自动检测装置。如:运算出错、存储器读写出错、外设故障、电源掉电报警等。4.程序性中断:与用户程序错误有关的中断,统称为程序性中断。主要是使用户调试程序时,能检测中间结果或寻找错误所在而采用的检查手段。三、中断的一般处理过程这里以外设中断处理过程为例。一个完整的中断处理过程应包括:中断请求、中断排队、中断响应、中断处理、中断返回。1、中断请求中断源向CPU发出中断请求(INT):外设准备好,信息交换;当前执行程序允许中断请求,即IF=1CPU:CPU复位时,自动关中断。CPU响应中断后自动开中断。2、中断判优中断请求是随机的,有时会出现多个中断源同时提出中断请求,响应哪个中断源?安排中断优先级顺序—中断排队。最紧急和速度最高的设备排在最优先位置上。中断优先级:当CPU正在处理中断时,能响应更高级别的中断请求,而屏蔽掉同级或较低级别的中断请求。——中断嵌套单级中断处理和多级中断处理:单级中断处理不允许其他设备再中断CPU的程序;多级中断处理允许优先级高的中断打断优先级低的中断服务程序。优先排队方法:软件法:软件查询;硬件排队:硬件逻辑电路代替程序查询。软件查询法简单硬件方法专用硬件方式:可编程中断控制器芯片8259优先排队方法:3、中断响应CPU在执行每条指令周期的最后一个时钟周期采样INTR端,若发现有中断请求,下一机器周期不再进入取指周期,而进入中断响应周期。中断响应的条件CPU处于开中断状态;CPU在执行完现行指令后响应中断;当前的中断请求优先级高中断响应的过程发出中断响应信号INTA,CPU在两个总线周期发两个负脉冲给中断源;同时自动关中断,即置中断允许触发器IF=0;保存断点;转入中断服务程序入口地址。4、中断处理保护现场执行中断服务程序恢复现场开中断中断处理过程通常由软件来完成。5、中断返回中断服务程序的最后一条指令是中断返回指令IRET,回到主程序断点处继续执行。中断请求中断判优中断响应中断处理中断返回中断服务程序框图与程序示例中断服务程序入口CPU响应中断后自动关中断保护现场开中断中断服务关中断恢复现场开中断中断返回入口地址:PUSHAX;保护现场PUSHBXPUSHCXPUSHDXPUSHSIPUSHDIPUSHSPPUSHBPSTI;开中断∶;中断服务CLI;关中断POPBP;恢复现场POPSPPOPDIPOPSIPOPDXPOPCXPOPBXPOPAXSTI;开中断IRET;中断返回结尾部分主体部分起始部分7.28086/8088中断系统8086具备处理256种中断类型的能力。中断源可来自CPU的内部,也可以来自外部设备;可以是硬件产生,也可以是软件产生。8086CPU各中断源如下图所示INTRNMI8086/8088CPU中断逻辑单步(TF=1)除法出错INTO溢出INT3断点非屏蔽中断请求8259A可屏蔽中断请求INTn指令一、中断分类外部中断(硬件中断)内部中断(软件中断)非屏蔽中断(NMI)可屏蔽中断(INTR)系统内部中断用户定义软件中断(INTn)(一)外部中断8086/8088有两条外部中断请求线:非屏蔽中断NMI和可屏蔽中断INTR。1、可屏蔽中断INTRINTR线上的中断请求是高电平有效,且须保持到当前指令结束。INTR信号一般来自可编程中断控制器8259A。8259A用来管理各种外围芯片所产生的中断请求,确定哪个中断请求的优先级别最高,并向8086CPU发中断请求信号INTR。CPU根据标志寄存器FR中的中断允许位IF来决定是否响应INTR2、非屏蔽中断NMI采用边沿触发,用于通知CPU发生灾难性事件。如:电源掉电、存储器读写出错等。NMI信号是不能禁止的,不受IF的影响,且立即被CPU锁存起来,在当前指令执行完后,CPU就立即响应。NMI比任何一个INTR的优先级都高,若同时发生,则NMI首先得到CPU的响应。当发生NMI中断时,CPU不需要发中断响应信号INTA,CPU会自动启动NMI的中断服务程序。(二)内部中断内部中断是CPU根据软件中的某条指令或软件对标志寄存器中某个标志的设置而产生的,从内部中断的产生过程来说,完全和硬件电路无关。1、8086内部中断类型a、类型0—除法出错除法运算(DIV或IDIV指令)所得的商大于被除数所在寄存器能容纳的最大值。--CPU产生类型0中断。(自动产生)b、类型1–单步中断FR中有TF标志位,CPU每执行一条指令都测TF状态。TF=1,CPU产生中断类型1的中断,转入单步中断的程序。c、类型3–断点中断有一条专门设置断点的指令–INT3。进入断点中断程序。d、类型4–溢出中断(INTO)e、用户自定义的软件中断一个两字节中断指令INTn:第一字节是软件中断的操作码;第二字节是中断类型码。CPU根据中断类型码就可以找到中断服务程序入口地址。2、8086/8088内部中断的特征中断类型代码是指令中指定的,或隐含的,或是预定的。CPU不执行中断响应总线周期INTA。除单步中断外,其他内部中断的优先级都比外部中断的要高,都不能被屏蔽(禁止)。单步中断的优先级是所有中断里最低的,它可以用中断允许标志位TF置0来屏蔽。8086/8088中断优先级别中断源优先级除法错、INTn,INTO最高NMI↑INTR单步中断最低3、中断类型号和中断向量表中断类型号:对每种中断都指定一个中断类型号代码0~255,每一个中断类型号都可以与一个中断服务程序相对应。中断服务程序存放在存储区域内,而中断服务程序的入口地址存在内存储器的中断向量表内。外部中断:INTR是第二个中断周期采样数据线取得NMI是CPU自动产生中断类型号2内部中断:INTn:其中n为中断类型号0~4号自动产生中断向量表:是中断类型号与它相应的中断服务程序入口地址之间的转换表。中断向量在中断向量表中的存放地址=4×n中断向量表中断向量表的设置中断向量表的设置——将中断源的中断向量存入中断向量表对应的位置。方法一:用系统功能调用设置。实现:(1)功能号:25H(2)调用参数:DS←中断向量的段基址DX←中断向量的偏移地址AL←中断类型码N例:某中断源的中断类型码为70H,其中断服务程序入口地址为IRQ0。该中断源的中断向量表设置程序:PUSHDSMOVAX,SEGIRQ0MOVDS,AX;段基址送入DSMOVDX,OFFSETIRQ0;偏移地址送入DXMOVAX,2570H;类型码送AL,功能号送AHINT21H;系统功能调用POPDS方法二:用传送指令设置例:某中断源的中断类型码为72H,其中断服务程序入口地址为IRQ2。该中断源的中断向量表设置程序:72H×4=01C8HCLIPUSHDSMOVAX,0MOVDS,AX;中断向量表段基址为0MOVAX,OFFSETIRQ2;存入偏移地址MOV[01C8H],AXMOVAX,SEGIRQ2;存入段基址MOV[01CAH],AXPOPDS4、8086/8088中断处理过程1)中断申请外中断申请(包括NMI、INTR),内部中断不执行此步。2)中断响应响应条件:IF=1,中断允许;中断为高优先级;当前指令已执行完响应过程:获取中断类型号;清除IF和TF的状态标志位;保存正在执行的主程序断点;将中断类型码乘4,指向中断向量表中的中断处理子程序的入口地址;3)中断处理保护现场;执行中断处理子程序;恢复现场4)中断返回返回到被中断了的主程序的断点处继续执行。