《微机原理课件1第18次课1中断new2章节》由会员分享,可在线阅读,更多相关《微机原理课件1第18次课1中断new2章节(93页珍藏版)》请在金锄头文库上搜索。
1、第8章 中断控制接口,第8章 中断系统,教学重点 8086/8088 中断系统 8259A的中断工作过程和工作方式 中断服务程序的编写,中断的定义,CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。,5.1 8086/8088中断系统,8088的中断系统采用向量中断机制 能够处理256个中断 用中断向量号0255区别 可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理,2. 中断源,引起CPU中断的
2、事件中断源。例如: 外设请求输入输出数据,报告故障等 事件掉电、硬件故障、软件错误、非法操作、定时时间到等 中断源分为:外部中断、内部中断 内部中断:CPU内部执行程序时自身产生的中断 外部中断:CPU以外的设备、部件产生的中断 8086/8088的外部中断信号:INTR、NMI INTR可屏蔽中断请求,高电平有效,受IF标志的控制。IF=1时,执行完当前指令后CPU对它作出响应。 NMI非屏蔽中断请求,上升沿有效,任何时候CPU都要响应此中断请求信号。,5.1.1 8086/8088的中断类型,内部中断 除法错中断 指令中断 溢出中断 单步中断 外部中断 非屏蔽中断 可屏蔽中断,1. 内部中
3、断,内部中断是由于8086/8088内部执行程序出现异常引起的程序中断 除法错中断:向量号为0 指令中断:向量号为n 断点中断:向量号为3 溢出中断:向量号为4 单步中断:向量号为1,内部中断的中断向量号已定,2. 外部中断,外部中断是由于8086/8088外部提出中断请求引起的程序中断 非屏蔽中断:向量号为2 外部通过非屏蔽中断NMI请求,必须响应 非屏蔽中断主要用于处理系统的意外或故障 可屏蔽中断:向量号来自中断控制器 外部通过可屏蔽中断INTR请求,由IF控制是否响应;响应时产生INTA*信号 可屏蔽中断主要用于与外设交换数据,IF控制可屏蔽中断的响应,中断标志IF的状态,IF0:可屏蔽
4、中断不会被响应 关中断、禁止中断、中断屏蔽 系统复位,使IF0 任何一个中断被响应,使IF0 执行指令CLI,使IF0 IF1:可屏蔽中断会被响应 开中断、允许中断、中断开放 执行指令STI,使IF1 执行指令IRET恢复原IF状态,明确IF标志的状态是关键,5.1.2 8086/8088的中断响应过程,查询中断的顺序, 决定了各种中断源的优先权 软件中断 除法错中断 指令中断 溢出中断 非屏蔽中断 可屏蔽中断 单步中断,5.1.2 8086/8088的中断响应过程(续),8088各种中断源的优先权, 实际上是指被识别出来的先后 多种中断同时请求时, 最先响应的则可能是 单步中断或NMI中断,
5、5.1.3 8086/8088的中断向量表,中断向量:中断服务程序的入口地址(首地址) 逻辑地址含有段地址CS和偏移地址IP(32位) 每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节 8088微处理器从物理地址000H开始,依次安排各个中断向量,向量号也从0开始 256个中断占用1KB区域,就形成中断向量表,向量号为N的中断向量的 物理地址N4,5.1.4 内部中断服务程序,编写内部中断服务程序与编写子程序类似 利用过程定义伪指令PROC/ENDP 第1条指令通常为开中断指令STI 最后用中断返回指令IRET 通常采用寄存器传递参数 主程序需要调用中断服务程序 调用前,需要设置中断
6、向量 利用INT n指令调用中断服务程序,中断向量表初始化,读取中断向量 入口:AH=35H,AL=中断类型号(中断号) 出口参数:ES:BX=中断向量 重写中断向量 入口:AH=35H, AL=中断类型号,DS:DX=要写入的中断向量,例5.1 内部中断服务程序,编写80H号中断服务程序 功能:显示以“0”结尾字符串的功能 利用显示器功能调用INT 10H 字符串缓冲区首地址为入口参数 DS:DX(段地址:偏移地址)传递参数,数据段,intoff dw ? intseg dw ? intmsg db A Instruction Interrupt ! db 0dh,0ah,0,例7.1,保存
7、中断向量,mov ax,3580h int 21h mov intoff,bx ;保存偏移地址 mov intseg,es ;保存段基地址,例7.1,设置中断向量,push ds mov dx,offset new80h mov ax,seg new80h mov ds,ax mov ax,2580h int 21h pop ds,例7.1,调用中断服务程序,mov dx,offset intmsg int 80h,例7.1,new80h proc sti ;开中断 push ax ;保护寄存器 push bx push si,例7.1,进入中断服务程序,显示字符串,mov si,dx new
8、1: mov al,si ;显示的字符AL cmp al,0 jz new2 mov bx,0 ;入口参数,显示页 mov ah,0eh ;功能号 int 10h inc si jmp new1,例7.1,退出中断服务程序,new2: pop si ;恢复寄存器 pop bx pop ax iret ;中断返回 new80h endp,例7.1,主程序结束,mov dx,intoff mov ax,intseg mov ds,ax mov ax,2580h int 21h mov ax,4c00h int 21h,例7.1,A Instruction Interrupt !,5.2 可编程中断
9、控制器8259A,Intel 8259A是可编程中断控制器PIC 可用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断 8259A的基本功能 一片8259A可以管理8级中断,可扩展至64级 每一级中断都可单独被屏蔽或允许 在中断响应周期,可提供相应的中断向量号 8259A设计有多种工作方式,可通过编程选择,5.2.1 8259A的内部结构和引脚,1. 中断控制,中断请求寄存器IRR 保存8条外界中断请求信号IR0IR7的请求状态 Di位为1表示IRi引脚有中断请求;为0表示无请求 中断服务寄存器ISR 保存正在被8259A服务着的中断状态 Di位为1
10、表示IRi中断正在服务中;为0表示没有被服务 中断屏蔽寄存器IMR 保存对中断请求信号IR的屏蔽状态 Di位为1表示IRi中断被屏蔽(禁止);为0表示允许,2. 与处理器接口,3. 中断级连,一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A 级连时,主8259A的三条级连线CAS0CAS2作为输出线,连至每个从8259A的CAS0CAS2 每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR 主8259A的INT线连至CPU的中断请求输入端 SP*/EN*在非缓冲方式下,规定该8259A是主片(SP*1)还是从片(SP*0),示例,5
11、.2.2 8259A的中断过程,中断响应周期,第一个中断响应周期数据线浮空。通知发中断请求的设备,CPU准备响应中断,应该准备好中断类型码。 第二个中断响应周期被响应的外设将一个字节的中断类型码送数据线,CPU读取类型码。,处理过程(续): 8259A收到第一个负脉冲后 使IRR锁存允许,不予接受IR0IR7上的中断请求信号;直到第二个负脉冲结束后,才又使IRR锁存禁止(输入输出透明) 使ISR的相应位置“1”,以便为优先级裁决器以后的裁决提供依据。 清除IRR的相应位。 8259A收到第二个负脉冲后: 把中断类型码寄存器的内容(ICW2的内容)送到D7D0 如果ICW4的AEOI位为1,则在
12、第二个 脉冲结束时,将ISR中被第一个 脉冲置“1”的位清除(自动结束);否则,要等到中断结束命令(EOI)发送后才能清除。,5.2.3 8259A的工作方式,1. 设置优先权方式,普通全嵌套方式 8259A的中断优先权顺序固定不变,从高到低依次为IR0、IR1、IR2、IR7 中断请求后,8259A对当前请求中断中优先权最高的中断IRi予以响应,将其向量号送上数据总线,对应ISR的Di位置位,至到中断结束(ISR的Di位复位) 在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套 特殊全嵌套方式 优先权自动循环方式 优先权特殊循环方式,2. 结束中断处理方式
13、,什么是8259A的中断结束?,8259A利用中断服务寄存器ISR判断: 某位为1,表示正在进行中断服务; 该位为0,就是该中断结束服务。 这里说明如何使ISR某位为0, 不反映CPU的工作状态。,2. 结束中断处理方式,自动中断结束方式 普通中断结束方式 配合全嵌套优先权方式使用 当CPU用输出指令往8259A发出普通中断结束EOI命令时,8259A就会把所有正在服务的中断中优先权最高的ISR位复位 特殊中断结束方式 配合循环优先权方式使用 CPU在程序中向8259A发送一条特殊中断结束命令,这个命令中指出了要清除哪个ISR位,3. 屏蔽中断源方式,普通屏蔽方式 将IMR的Di位置1,则对应
14、的中断IRi被屏蔽,该中断请求不能从8259A送到CPU 如果IMR的Di位置0,则允许IRi中断产生 特殊屏蔽方式 将IMR的Di位置1,对应的中断IRi被屏蔽的同时,使ISR的Di位置0,4. 中断触发方式,边沿触发方式 8259A将中断请求输入端出现的上升沿作为中断请求信号 电平触发方式 中断请求端出现的高电平是有效的中断请求信号,5. 数据线连接方式,缓冲方式 8259A的数据线需加缓冲器予以驱动 8259A把SP*/EN*引脚作为输出端,输出允许信号,用以锁存或开启缓冲器 非缓冲方式 SP*/EN*引脚为输入端 若8259A级连,由其确定是主片或从片,5.2.4 8259A的编程,初
15、始化编程 8259A开始工作前,必须进行初始化编程 给8259A写入初始化命令字ICW 中断操作编程 在8259A工作期间 可以写入操作命令字OCW将选定的操作传送给8259A,使之按新的要求工作 还可以读取8259A的信息,以便了解他的工作状态,8259A的内部结构,CPU,AD7AD0,INTR,ISR,ICW1,OCW1 (IMR),ICW2,OCW2,ICW3,OCW3,ICW4,PR,IRR,D7D0,地址 译码,. . .,INT,A0,CAS0,CAS1,CAS2,. . .,IR7,IR0,IRRInterrupt Request Register PR-Priority Re
16、solver ISR-In-Service Register IMR-Interrupt Mask Register ICWs-Initialization Command Words OCWs-Operation Command Words 7个CPU可访问的寄存器,分两组: 初始化命令字ICW1 ICW4-系统初启时设定。 操作命令字OCW1OCW3系统运行时,由应用程序设定(实现对中断处理的动态管理和控制). The OCWs can be written into the 8259A anytime after initialization。,8259A的内部结构,1. 初始化命令字ICW,初始化命令字ICW最多有4个 8259A在开始工作前必须写入 必须按照ICW1ICW4顺序写入 ICW1和ICW2是必须送的 ICW3和ICW4由工作方式决定,流程,ICW1,表示可以任意 为1为0都可以(建议为