420 likes | 626 Views
第七章 中 断. 7.1 中断与异常中断 7.2 向量中断系统 * 7.3 多任务系统 * 7.4 任 务 转 换 7.5 可编程中断控制器 8259A 7.6 中断向量表的建立方法 7.7 CPU 的中断处理顺序. 7.1 中断与异常中断. 1. 中断的概念 中断 (中断 / 异常) 中断源 中断请求 中断响应 中断处理 中断返回 2. 中断分类 按中断源的性质可以把中断分类 :. (1). 外部硬件中断 : 中断源是外部硬电路。通过 CPU 的 NMI 引脚或 INTR 引脚向 CPU 提出中断请求。
E N D
第七章 中 断 7.1 中断与异常中断 7.2 向量中断系统 *7.3 多任务系统 *7.4 任 务 转 换 7.5 可编程中断控制器8259A 7.6 中断向量表的建立方法 7.7 CPU的中断处理顺序
7.1中断与异常中断 1. 中断的概念 中断 (中断/异常) 中断源 中断请求 中断响应 中断处理 中断返回 2. 中断分类 按中断源的性质可以把中断分类:
(1).外部硬件中断: 中断源是外部硬电路。通过CPU的NMI引脚或INTR引脚向CPU提出中断请求。 INTR:可屏蔽中断,受CPU内标志寄存器中IF位的屏蔽 NMI:非屏蔽中断,不受IF位的屏蔽。 CPU每执行完一条指令,检测NMI和INTR引脚上有无中断请求。 (2).内部异常中断: 中断源是CPU内部正在执行的过程发生的异常情况。 如除法操作时结果太大 (分母太小) ; 访问某个页或段时,该页或段正好不在内存; 系统的硬件 、软件 (各种系统用表)发生错误。
3.中断优先顺序 CPU的中断优先权排列从高到低为: (1)除法出错中断,溢出中断,INT n,… (2)NMI (3)INTR (4)单步中断 4.中断类型码 中断类型码是连接中断源和中断处理程序的唯一桥梁。80X86可处理256级中断,中断类型码可以是0~255,一部分由系统占用,一部分用户可以支配。 比如:除法错误(n=0) 调试异常(n=1) NMI中断(n=2) 断点中断(n=3) 溢出中断(n=4) ……
6.中断向量表和中断描述符表 每个中断都分配有中断类型码,CPU通过中断类型码经过处理要找到对应的中断服务程序的入口地址。 .实模式: 由中断向量表将中断类型码和中断服务 程的入口地址联系起来; .保护模式:是由中断描述符表来对二者进行联系。
实模式下几个重要概念: .中断向量表:设置在系统RAM的最低端00000H~003FFH的1K字节内,表中共有256个中断类型码对应的向量值。(256*4=1K) .中断向量:每个向量占用4个字节,称为中断向量。前2个字节为中断服务程序入口地址的偏移地址IP,后2个字节为服务程序的段基址CS。 .向量地址:这4个单元的地址中的最小地址称为向量地址。 规定:中断向量表中各向量等长,且处理程序入口地址在向量表中按中断源的类型码排序。 重要公式: 向量地址=向量表的首地址 + 中断类型码*4 讨论:已知中断类型码n,如何得到中断服务程序入口 地址?
保护模式: .中断描述符表(IDT):在内存中的首地址保存在CPU内部的IDTR系统寄存器中。 .CPU响应中断过程中,CPU把中断类型码乘以8,与IDTR中的基地址相加,指示中断描述符表中的某一中断门或陷阱门(8个字节组成)。 .CPU将门描述符中的选择符送CS寄存器,并根据选择符中TI位从LDT或GDT中选择一个段描述符,送入CS的段描述符寄存器中。 .由段描述符中的基地址和门描述符中的偏移地址确定中断服务程序的入口地址。
7.6 中断向量表的建立方法 7.6.1 绝对地址置入法 AT指定段地址(16位) ,ORG指定偏移地址,用DD伪指令将中断服务程序的首地址装入。 INTTBL SEGMENT AT 0 ORG n*4 DD INT_VCE INTTBL ENDS …… MCODE SEGMENT ;主程序 …… INT_VCE PROC FAR ;中断服务程序 …… IRET
7.6.2 使用串指令装入法 ES设定为0,DI中设定为n*4,使用STOSW指令、即可完成中断服务程序首地址的装入。 CLI ;禁止中断 MOV AX,0 MOV ES,AX ;置向量表段地址 MOV DI,n*4H ;置向量表偏移地址 MOV AX,OFFSET INT_VCE;中断服务程序偏移地址 CLD STOSW MOV AX,SEG INTV_CE ;中断服务程序段地址 STOSW STI
7.6.3 使用DOS调用法 利用DOS中断21H以及专门为更新中断服务程序地址的25H号功能来设置中断地址。 使用25H功能时要求:AL=中断类型号,DS∶DX=中断服务程序首地址的段、偏移地址。 PUSH DS ;保存当前数据段 MOV DX,SEG INT60H MOV DS,DX MOV DX,OFFSET INT60H MOV AL,60H ;设中断类型号为60H MOV AH,25H INT 21H POP DS
7.6.4 直接接入法 例:外设的中断类型号为6BH,则对应的中断向量表地址为从001ACH开始的4个存储单元。 设中断服务程序段地址在1000H,偏移地址为2000H。 …… XOR AX,AX MOV DS,AX ;指向0段 MOV AX,2000H MOV WORD PTR [01ACH],AX ;置偏移地址 MOV AX,1000H MOV WORD PTR [01ACH+2],AX ;置段地址 ……
7.5 可编程中断控制器8259A 7.5.1 8259A的内部结构及管脚分配
特点:可编程、八级向量优先中断、级连、优先权动态特点:可编程、八级向量优先中断、级连、优先权动态 地改变。 1.中断请求寄存器(IRR) 中断请求IR7-IR0,当某个为高电平时,IRR相应位置“1”。 2.中断服务寄存器(ISR) 任何一级中断被响应,执行其中断服务程序,ISR相应位置“1” 。多重中断情况下,ISR中多位被同时置“1”。 3.优先权判别器(PR) 当IR7-IR0中有多个中断请求信号同时产生时,PR判定哪个中断请求具有最高优先权,并把它置入ISR的相应位。
4 .中断屏蔽寄存器(IMR) 通过IMR可实现对各级中断的有选择的屏蔽。
5.级联(中断最多扩展到64级) 一片8259A只能接收8级中断,当超过8级时,可用多片8259A级联使用,构成主从关系。 连线要求: .主8259A:级联信号CAS2-CAS0是输出信号; SP端为“1” .从8259A:级联信号CAS2-CAS0是输入信号; SP端为“0” .从8259A的INT输出接到主的中断输入端IR上
6.控制电路 根据IRR的置位情况和优先权判别器PR的判定结果,向8259A内部其它部件发出控制信号,并向CPU发出中断请求INT和接收来自CPU的中断响应INTA。 7.读/写控制逻辑 A0 :8259A占两个I/O端口地址,用A0来选 :端口地址的其它高位由片选信号端输入。 :读信号 :写信号 8.数据总线缓冲器 双向8位三态缓冲器,构成8259A与CPU之间的数据接口。
二、8259A的管脚分配 4类: . 与外部设备连接的中断请求输入管脚IR0-IR7; . 与CPU连接的数据通路和控制信号:D0-D7,WR,RD,INTA,INT; . 用于8259A级联的管脚CAS0-CAS2,SP/EN; . 端口地址选择信号CS,A0。
7.5.2 8259A的中断管理方式 一、中断优先权管理(4种) 1.完全嵌套方式 固定优先权:IR0>IR1>…>IR7。 高优先级的中断可进入低优先级,但低优先级不能进入高优称级或同等优先级。 2.自动循环方式 IR0-IR7轮流具有最高优先权。 当任何一级中断被处理完,它的优先级别就被改变为最低,而最高优先级分配给该中断的下一级中断。
3.中断屏蔽方式 .普通屏蔽:在中断屏蔽寄存器IMR中,将某一位或几位置“1”来屏蔽掉相应级别的中断请求。 .特殊屏蔽:可使低优先级别的中断进入正在服务的高优先级别中。 4.特殊完全嵌套方式(用于级联情况) 接在主片IR3上的从片比接在IR4上的从片具有高的优先权;而主片上IR0,IR1,IR2上的中断比从片具有高优先权。 二、8259A中断结束的管理方式 中断结束的管理就是用不同的方式使ISR的相应位清“0”,并确定下面的优先排队。 .完全嵌套情况 .自动循环情况 .特殊完全嵌套情况
7.5.3 8259A的编程 初始化:第一部分称预置命令字ICW1-ICW4。预置命令字是要按规定顺序写入8259A中的。 预置命令字功能: . ICW1:8259A是单一式还是主从式; . ICW2:设置8个中断请求设备的类型号; . ICW3:若为主从式则规定主8259A中每个IR端是否带从 8259A,从8259A则要规定从主8259A的哪个IR 端引入; . ICW4:完成中断管理方式的设定。
不是任何情况下都需要设置4个预命令,可根据8259A的使用情况而定。不是任何情况下都需要设置4个预命令,可根据8259A的使用情况而定。 第二部分称操作命令字OCW1-OCW3,8259A通过ICW1-ICW4初始化后,任何时间写入OCW1-OCW3 ,且无需按顺序写。
一、预置命令字 1.ICW1的格式 D1=1,使用单片8259A; D1=0, 8259A级联。 D3=1,电平触发方式; D3=0,边缘触发方式。
2.ICW2:提供中断类型号 中断类型号的高5位由用户指定,低3位由8259A的中断请求输入端IR7-IR0的编码决定。中断类型码是连续的。 在ICW2中,用户指定高5位后,当8259A的某个IR端有中断请求,就自动填入相应IR的编码到ICW2的低3位。
3.ICW3 只有在8259A有级联的情况下使用,主片和从片的ICW3格式不同,主片的ICW3表明主8259A的哪个IR端接有从8259A。从片的ICW3表明它接在主8259A的哪个IR端。 主8259A的ICW3格式为: 每位对应一个相应的IR端,若某个IR上接有从8259A,则该位为1,否则为0。
从8259A的ICW3格式为: ID2-ID0为该从8259A接入主8259A的IR端的编码。
4.ICW4的格式 .AEOI:定义是否采用自动中断结束方式。D1=1为自动EOI, D1=0为正常EOI。 .SFNM:D4=1为特殊完全嵌套方式,D4=0为 非特殊完全嵌套方式。 .BUF及M/S:0X—非缓冲方式;10—缓冲方式从片; 11—缓冲方式主片。
二、操作命令字 1.OCW1的格式 实现屏蔽功能,OCW1的内容被置入中断屏蔽寄存器IMR中,Di为“1”:禁止对应的IR端的中断请求. Di为“0”:允许对应的IR端的中断请求. OCW1的格式如下:
2.OCW2的格式 控制中断结束,优先权循环等操作。 L2-L0:编码指定相应的IR端为当前结束中断。 R SL EOI 功能 0 0 1 一般EOI命令 0 1 1 特殊EOI命令 1 0 1 自动循环的一般EOI命令 1 0 0 设置自动循环AEOI方式 0 0 0 清除自动循环AEOI方式 1 1 1 自动循环特殊EOI命令 1 1 0 置位优先权命令 0 1 0 无效
3.OCW3的格式 控制8259A的中断屏蔽和读取寄存器的状态。 .ESMM及SMM:0X-无用;10-清除特殊屏蔽; 11-设置特殊屏蔽 .P=1,查询中断; P=0,非查询中断; .RR及RIS:0X-无用;10-随后读IRR; 11-随后读ISR
例7.1在某个8086最小方式系统中接有一片8259A,有一外设中断请求从IR7引入,8259A的端口地址及外设申请中断的中断类型号由图给出,试写出8259A的初始化程序。例7.1在某个8086最小方式系统中接有一片8259A,有一外设中断请求从IR7引入,8259A的端口地址及外设申请中断的中断类型号由图给出,试写出8259A的初始化程序。
MAIN SEGMENT …… CLI;关中断 MOV AL,13H ;ICW1 OUT 84H,AL MOV AL,0C7H ;ICW2 OUT 86H,AL MOV AL,01 ;ICW4 OUT 86H,AL STI ;开中断 MAIN ENDS 端口地址分析: 中断类型号分析: 初始化程序: INTRRUP SEGMENT AT 0 ORG 0C7H*4 DD INTC7 INTRRUP ENDS INTC7 …… ……
例 7.2 8259A的级联使用。某系统有两片8259A, .从片8259A接主片的IR4,主片的IR2和IR5有外部中断引入,从片IR0和IR3上也分别有外设中断引入。 .主片中断类型号分别为62H,65H,中断服务程序在同一段中,段地址为2000H,两个中断服务的偏移地址为2500H和2600H。 .从片中断类型号分别为40H,43H,中断服务程序也在同一段中,段地址为4000H,偏移地址为2640H和4620H, 试分别写出主8259A和从8259A的初始化程序。 级联图
主片8259A,设定如下要求: (1) 主8259A有级联,从IR4引入; (2) 中断请求信号以边沿触发; (3) 中断类型号为60H~67H; (4) 采用特殊完全嵌套方式; (5) 采用非自动结束EOI,非缓冲方式,SP=1; (6) 采用一般EOI结束方式; (7) 屏蔽IR2,IR4和IR5以外的中断源。
主片8259A的初始化程序如下: …… MOV AL,11H ;ICW1,A0=0 MOV DX,MPORT0 OUT DX,AL MOV AL,62H ;ICW2,A0=1 MOV DX,MPORT1 OUT DX,AL MOV AL,10H ;ICW3,A0=1 OUT DX,AL MOV AL,11H ;ICW4,A0=1 OUT DX,AL MOV AL,0CBH ;OCW1,A0=1 OUT DX,AL MOV AL,20H ;OCW2,A0=0 MOV DX,MPORT0 OUT DX,AL
从片8259A的要求为: (1) 从片8259A接在主片IR4上; (2) 中断请求信号为边沿触发; (3) 中断类型号分别为40H~47H; (4) 采用特殊完全嵌套方式; (5) 采用非自动结束EOI,非缓冲方式,SP=0; (6) 采用一般EOI结束; (7) 屏蔽掉IR0和IR3以外的中断源。
从片8259A的初始化程序为: …… MOV AL,11H ;ICW1,A0=0 MOV DX,SPORT0 OUT DX,AL MOV AL,40H ;ICW2,A0=1 MOV DX,SPORT1 OUT DX,AL MOV AL,04 ;ICW3,A0=1 OUT DX,AL MOV AL,11H ;ICW4,A0=1 OUT DX,AL MOV AL,0F6H ;OCW1,A0=1 OUT DX,AL MOV AL,20H ;OCW2,A0=0 MOV DX,SPORT0 OUT DX,AL
将中断服务程序地址置入中断地址入口表中: SEGMENT AT 0 ORG 40H*4 SINTR0 DW 2640H ;从片IR0中断服务地址 DW 4000H ORG 43H*4 SINTR3 DW 4620H ;从片IR3中断服务地址 DW 4000H ORG 62H*4 MINTR2 DW 2500H ;主片IR2中断服务地址 DW 2000H ORG 65H*4 ;主片IR5中断服务地址 MINTR5 DW 2600H DW 2000H
例7.3系统正在处理由8259A的IR3引入的中断,而临时有一个低优先级别的中断要紧急处理,一般情况下是不允许的,但8259A利用设置操作命令字(OCW3)可以做到这点,对8259A设置特殊屏蔽方式(SMM位)使运行的中断暂时停止,一直维持到SMM复位。例7.3系统正在处理由8259A的IR3引入的中断,而临时有一个低优先级别的中断要紧急处理,一般情况下是不允许的,但8259A利用设置操作命令字(OCW3)可以做到这点,对8259A设置特殊屏蔽方式(SMM位)使运行的中断暂时停止,一直维持到SMM复位。
IR3服务程序 …… CLI ;关中断 MOV AL,08H ;屏蔽IR3,OCW1 MOV DX,PORT1 OUT DX,AL MOV AL,68H ;OCW3,SMM位置“1” MOV DX,PORT0 OUT DX,AL STI ;开中断 ……. ;低优先级中断处理 CLI ;关中断 MOV AL,48H ;OCW3,SMM复位 MOV DX,PORT0 OUT DX,AL MOV AL,00H ;OCW1,开放IR3 MOV DX,PORT1 OUT DX,AL STI ;开中断