中断技术6.1中断概述中断,是CPU在执行当前程序的过程中,由于某种随机出现的外围设备的请求,使得CPU暂时停止正在执行的程序,转去 执行为外围设备服务的程序,当为外围设备服务的程序执行完后,CPU再返回到原暂时停止的程序处(即断点)继续执行的这一过程。中断示意 图6.1中断概述凡是能发出中断请求的外部设备及内部原因(包括软件中断和异常故障)被称为中断源。常见的中断源有:外设中断: 系统外设要求与CPU交换信息而产生的中断。如打印机、磁盘等。指令中断:为方便用户使用系统资源或调试程序而设置的中断指令。程序中 断:程序在运行过程中出现的多种错误而产生的中断。如溢出中断、非法除数中断、地址越界中断、非法操作码中断等。故障中断:机器在运行过 程中,硬件出现错误而引起的中断。如校验错、电源故障等。CPU响应中断的条件:设置中断请求触发器(发出中断)设置中断屏蔽触发 器(未被屏蔽)设置中断允许触发器(允许中断)CPU在现行指令结束后响应中断具有中断屏蔽功能的接口电路示例中断响应与中 断处理过程:关中断保护断点识别中断源保护现场中断服务恢复现场开中断与返回中断优先级(Priority),又称 优先权,即在多个中断源同时请求中断时,确定服务的次序。解决中断的优先级的方法常有以下几种:软件查询确定中断优先级(原理图)硬 件查询确定优先级(链式优先级排队原理图)中断优先级编码电路(由编码器和比较器构成的优先级排队电路原理图)中断嵌套,或称多重 中断,即当CPU执行优先级较低的中断服务程序时,允许响应比它优先级高的中断源请求中断,而挂起正在处理的中断。多个中断源、单一中 断请求线的多重中断流程可屏蔽中断INTR8086/8088的中断时序不可屏蔽中断NMI(中断类型码固定为2),用于 通知CPU发生了“灾难性”的事件,如电源掉电、存储器读写错误、总线奇偶位出错等。溢出中断(4号中断)除法出错中断(0号中断) INTn指令中断断点中断(3号中断)单步(陷阱)中断(1号中断)中断向量:是中断服务程序的入口地址,包括中断服务程序的段 基址CS和偏移地址IP(共占4个字节)。中断向量表:是存放中断向量的表格,它存放在存储器的最低端,共1KB,存放256个中断向 量。向量地址:是在中断向量表中,每个中断向量在存储空间上的最低地址,是将中断类型码乘4以获取。8086/8088的中断向量表结 构(1)保护断点。即把当前标志寄存器PSW、代码段寄存器CS和指令指针寄存器IP的内容压入堆栈:(SP)←(SP)-2 ((SP)+1:(SP))←(PSW)(SP)←(SP)-2((SP)+1:(SP))←(CS)(SP)← (SP)-2((SP)+1:(SP))←(IP)(2)清除IF和TF,即IF←0,TF←0,以便禁止其它可屏蔽中断和单步 中断(3)获取中断向量。将中断类型码乘以4获得向量地址,根据向量地址查找中断向量表后,将对应的中断向量放入CS和IP,从而将控制 转入中断服务程序:(IP)←[0000H:4×N](CS)←[0000H:4×N+2]在中断服务程序执行完后,最后要 执行一条中断返回指令IRET,将原压入堆栈的标志和断点重又弹回原处:(IP)←((SP)+1:(SP))(SP)←(S P)+2(CS)←((SP)+1:(SP))(SP)←(SP)+2(PSW)←((SP)+1:(SP)) (SP)←(SP)+2【例】某外设中断类型号为13H,它的中断服务程序的入口地址为0070H:0FC9H,求其向量地址并具体 描述中断向量的各字节在存储器中的存储情况。【解】由13H×4=4CH,可得中断类型号为13H的向量地址为0000H:004CH, 该中断向量在向量表中的具体存储情况如下:(0000H:004CH)=C9H (0000H:004DH)=0FH(0000H:004EH)=70H (0000H:004FH)=00H INTER1 PROC FAR PUSH AX ;保护现场 PUSH BX …… ;中断服务程序 STI ;开中断,以便允许多重中断 …… ;继续执行中断服 务程序 (发中断结束命令) ;中断控制器8259A所要求的 POP BX ;恢复现场 POP AX IRET ;中断返回 INTER1 ENDP中断向量并非常驻内存,而是开机上电时,由程序装入内存指定的中断向量表中。系统配置和使用的 中断所对应的中断向量由系统软件负责装入,而用户编写的中断,其中断向量则要由用户自行装入。【例】某外设的中断服务程序为INTER1 ,其中断类型号为N,试编写一程序将该外设的中断向量装入到中断向量表中。(程序示例)优先级排队管理:根据任务的轻重缓急或设备的特殊 要求分配中断源的中断优先级。接受和扩充外部设备的中断请求:一片8259A可以接受管理8级中断请求,经过级联可以用9片8259A组 成两级中断机构,实现64级中断。提供中断类型号:在CPU响应中断后,8259A能自动向CPU提供相应中断请求的中断类型号,从而具 有对中断服务程序入口地址的寻址能力。它除了可以实现向量中断外,也可以实现查询中断。进行中断请求的屏蔽和开放:8259A能够对提出 中断请求的外部设备进行屏蔽和开放。CS: 片选信号WR:写信号RD: 读信号D0~D7:双向数据总线A0: 片内地址信号 IR0~IR7:外设中断请求信号,输入INT: 中断请求信号,输出INTA:中断应答信号,输入CAS2~CAS0:级联总线 ,传送3位标识码,用于区分特定的从8259。双向:对于主片为输出,对于从片为输入SP/EN:双功能引脚,输入表明主从关系(=1为 主片,=0为从片),输出表示缓冲方式启动数据总线收发器传送方向(=1表示CPU通过数据缓冲器写入8259A,=0CPU通 过数据缓冲器读8259A)引入中断请求(中断触发)的方式:边沿触发方式:以正跳沿向8259A请求中断,上跳沿后可一直维持高电平 ,不会再产生中断。电平触发方式:以高电平申请中断,但在响应后必须及时清除高电平,以免引起重复中断。中断查询方式:外设通过825 9A申请中断,但8259A却不使用INT信号向CPU申请中断,而是CPU通过软件查询确定中断源,并为其服务。连接系统总线的方式: 在多片级联的大系统中,要求数据总线有总线缓冲器。8259A与这种带总线缓冲器的系统总线的连接方式称为缓冲器方式。此时的SP/EN 用于启动缓冲器工作,不表示主/从关系。在小系统中,8259A不需要总线缓冲器而直接接至数据总线,此时称为非缓冲器方式,SP/EN 用于表示主/从芯片。屏蔽中断源的方式:普通屏蔽方式:利用操作字OCW1,使屏蔽寄存器IMR中的一位或几位置“1”来屏蔽一个或几 个中断源的中断请求。特殊屏蔽方式:在某些场合,在执行某一个中断服务程序时,要求允许另一个优先级比它低的中断请求被响应,此时可用特 殊屏蔽方式。特殊屏蔽方式可用OCW3的D6D5=11来设定。优先级排队方式:完全嵌套方式:中断优先级按0~7顺序排队,并且只 允许中断级别高的中断源去中断级别低的中断服务程序(缺省)。特殊完全嵌套方式:它和完全嵌套方式基本相同,所不同的是在特殊完全嵌套方 式下,在执行某一级中断服务程序时,可响应同级的中断请求,从而实现对同级中断请求的特殊嵌套。特殊完全嵌套方式常用于多片级联时对主片的 优先级方式的设定。优先级排队方式:自动循环方式:在此方式下,优先级顺序不是固定不变的,一个设备接受中断服务后,其优先级别自动降 为最低。该方式用于系统中多个中断源优先级相等的场合。特殊循环方式:该方式与自动循环方式的区别在于它可以通过程序发出特殊循环方式操 作命令来指定某个中断源的优先级别为最低级。中断结束方式:当8259A的某一中断级别的中断请求被CPU响应时,8259A 的中断服务寄存器ISR中的对应位将被置“1”,表示CPU正在执行ISRX为1的中断服务程序,这就要求在中断服务程序中或末尾通过适当 的手段将正在执行的ISRX位清除为“0”。中断结束方式:EOI命令方式:在中断服务程序结束之前向8259A发出中断结束命令,清 除ISR中的相应位,表示该级的中断服务程序已经结束。EOI命令有普通EOI命令和特殊EOI命令两种。普通EOI命令将自动清除IS R中所有已置位的优先级最高的那一位,适用于完全嵌套方式的中断结束。当8259A不工作于完全嵌套方式时,就要采用特殊EOI命令来结 束当前的中断服务,因为特殊EOI命令中带有用于指定ISR中相应位复位的三位编码信息。自动EOI方式:采用此方式时,在第二个INT A响应信号的后沿由8259A自动执行普通EOI操作,复位ISR中已置位的中断优先级最高的位。分为两步骤:(1)初始 化编程:写入2~4个初始化命令字ICW1~ICW4。(2)工作方式编程:写入3个操作命令字OCW1~OCW3以规定82 59A的工作方式。可以在初始化命令字以后的任何时间写入。初始化命令字编程流程:(1)ICW1、ICW2是必须的。(2)IC W3在级联时才有。(3)ICW4专用于8086系统。(4)地址线A0、特定标志位、及ICW的输入顺序相配合,完成多寄存器的寻址 。初始化命令字ICW1~ICW4的格式及其功能芯片控制字ICW1的格式及其功能中断类型字ICW2的格式及其功能级联控制 字ICW3的格式及其功能方式控制字ICW4的格式及其功能【例】8259A在8086系统中单片使用如下图所示,端口地址 为20H、21H,采用边沿触发、完全嵌套方式、非自动中断结束方式、缓冲方式,中断类型号的范围为08H~0FH,试编写该8259A的 初始化程序段。(解答)操作命令字OCW1~OCW3的格式及其功能中断屏蔽字OCW1的格式及其功能中断结束字OCW2的格 式及其功能方式控制字OCW3的格式及其功能thanks!6.1,6.2,6.5,6.9,6.10 6.2可编程中断控制器8259A8259A的初始化命令字及其编程【例】8259A在80286系统中两片级联使用如图所 示,主片端口地址为20H、21H,中断类型号的范围为08H~0FH。从片端口地址为A0H、A1H,中断类型号的范围为70H~77H 。主/从片均采用边沿触发、完全嵌套方式、非自动中断结束方式。试分析编排优先级别队列的次序并编写主/从8259A的初始化程序段。 6.2可编程中断控制器8259A8259A的初始化命令字及其编程8259A主片初始化程序段为:MOV AL,11 H ;ICW1:边沿触发、多片、要ICW4OUT 20H,ALMOV AL,08H ;ICW2:中断类型号的高5位为“00 001”OUT 21H,ALMOV AL,04H ;ICW3:主片的IR2上接从片(S2=1)OUT 21H,ALM OV AL,05H ;ICW4:完全嵌套、非自动中断结束、非缓冲方式、16位的CPUOUT 21H,AL8259A从片初始 化程序段为:MOV AL,11H ;ICW1:边沿触发、多片、要ICW4OUT 0A0H,ALMOV AL,70H ; ICW2:中断类型号的高5位为“01110”OUT 0A1H,ALMOV AL,02H ;ICW3:从片接主片的IR2,I D2ID1ID0=010)OUT 0A1H,ALMOV AL,01H ;ICW4:完全嵌套、非自动中断结束、非缓冲方式、1 6位的CPUOUT 0A1H,AL6.2可编程中断控制器8259A8259A的初始化命令字及其编程课后作业T ype225CSIP:CSType32IPCSType31IP:CSType5IPCSTy pe4IPCSType3IPIPIPIPCSCSCSType8Type1Type0 :224保留27个用户定义个8086专用5个03FFH03FCH0083H 0080H007FH007CH0014H0013H0010H000FH000CH000FH0008H0007H 0004H0003H0000H溢出中断断点中断非屏蔽中断单步中断除数为0方法一: MOV AX, 0 ;中断 向量表的段基址 MOV ES, AX MOV DI, N4 ;向量地址送DI ;中断向量装入中断向 量表中 MOV AX, OFFSETINTER1 CLD STOSW MOV AX, SEGINTER1 STOSW某外设的中断服务程序为INTER1,其中断类型号为N,试编写一程序将该外设的中断向量装入到中断向量表中。方法二: MOV AX, 0 ;中断向量表的段基址 MOV ES, AX MOV BX, N4 ;向量地址送BX ;中断向量 装入中断向量表中 MOV AX, OFFSETINTER1 MOV ES:[BX],AX MOV AX, SEG INTER1 MOV ES:[BX+2],AX某外设的中断服务程序为INTER1,其中断类型号为N,试编写一程序将该外设的中 断向量装入到中断向量表中。IRX输入触发方式0:上升沿1:高电平D7D6D5D4D3D2D1D0无定义无 定义LTIM×1××SNGLICW4×ICW1标志ICW4选择0:不需要1:需要单片级联选择 0:多片1:单片D7D6D5D4D3D2D1D0由程序决定高5位T6IR7:111IR6:11 0IR5:101IR4:100IR3:011IR2:010IR1:001IR0:000T7 ×××T4T5T3D7D6D5D4D3D2D1D0S6Sx=1表示IRX接有从8259 Sx=0表示IRX无从8259S7S4S5S3S1S2S0主8259ICW3:D7D6D5D4D3 D2D1D00IDi为从片的标识,与主8259的对应IRx的编号相同。0000ID2从8259ICW3: ID1ID0IR7:111IR6:110IR5:101IR4:100IR3:011IR2: 010IR1:001IR0:000设定结束方式0:非自动EOI1:自动EOICPU类型 0:8085/80801:8086/8088D7D6D5D4D3D2D1D0BUF000AEOIμ PMM/SSFNM级联方式优先权管理0:正常完全嵌套方式1:特殊完全嵌套方式主从选择0:作为从片1:作为主片 缓冲方式选择0:非缓冲方式SP/EN输入主8259接高电平从8259接低电平1:缓冲方式SP/EN输出第 6章中断的基本概念中断源6.1中断概述中断响应与中断处理6.1中断概述中断响应与中断处理6. 1中断概述中断优先级与中断嵌套6.1中断概述中断优先级与中断嵌套软件中断(内部)硬件中断(外部)INT n指令中断逻辑断点中断溢出中断单步中断除数为0中断(3)(4)(1)(0)非屏蔽 中断请求(2)中断控制器8259A可屏蔽中断请求NMIINTRINTOINT3OF=1TF=1 6.28086的中断系统外部中断6.28086的中断系统内部中断软件中断(内部)硬件中断(外部)I NTn指令中断逻辑断点中断溢出中断单步中断除数为0中断(3)(4)(1)(0)非 屏蔽中断请求(2)中断控制器8259A可屏蔽中断请求NMIINTRINTOINT3OF=1TF= 16.28086的中断系统中断向量与中断向量表6.28086的中断系统中断控制转入操作6.280 86的中断系统中断控制转入操作6.28086的中断系统中断返回操作6.28086的中断系统6.2 8086的中断系统中断服务程序格式6.28086的中断系统中断向量的装入6.2可编程中断控制器8259A8259A的基本功能6.2可编程中断控制器8259A8259A的内部结构6.2可编程中断控制器8259A8259A的引脚信号6.2可编程中断控制器8259A8259A的工作方式6.2可编程中断控制器8259A8259A的工作方式6.2可编程中断控制器8259A8259A的工作方式6.2可编程中断控制器8259A8259A的工作方式6.2可编程中断控制器8259A8259A的工作方式6.2可编程中断控制器8259A8259A的工作方式6.2可编程中断控制器8259A8259A的工作方式6.2可编程中断控制器8259A8259A的初始化命令字及其编程6.2可编程中断控制器8259A8259A的初始化命令字及其编程6.2可编程中断控制器8259A8259A的初始化命令字及其编程6.2可编程中断控制器8259A8259A的初始化命令字及其编程 |
|