第一节中断的基本概念一、什么是中断二、中断源和中断优先权三、中断服务程序四、断点和中断现场五、硬件中断和软件中断第二节8088CPU的中断系统一、8088CPU的中断分类二、8088CPU的中断优先权三、8088CPU响应中断的过程四、8088CPU如何获取中断类型号第三节可编程中断控制器8259A一、引言二、8259A的引脚、编程结构和工作过程三、8259A的初始化编程第四节中断程序设计一、中断向量的设置*三、可屏蔽硬中断程序设计中断技术1一、什么是中断在CPU正常运行程序时,由于内部或外部某个非预料事件的发生,使CPU暂停正在运行的程序,而转去执行/处理引起中断事件的程序,然后再返回被中断了的程序,继续执行。
这个过程就是中断。
3CPU执行流程非预料事件1中断服务程序1非预料事件2中断服务程序24二、中断源和中断优先权引起中断的因素很多,将发出中断申请的外设或内部原因,称为中断源给每个中断源指定一个优先权,称为中断优先权当多个中断源同时发出中断请求时,CPU按照中断优先权的高低顺序,依次响应。
5三、中断服务程序处理中断源,完成其所要求功能的程序,称中断服务程序(中断例行程序、中断子程)。
CPU执行流程非预料事件1中断服务程序1非预料事件2中断服务程序26非预料事件是指事件发生的时间无法预知,即中断源何时产生中断不确定,是随机的。
但事件的性质及处理方法则是已知的,确定的,即中断服务程序是事先编写好的,只是何时执行未知。
中断源产生中断的随机性,使中断服务程序的执行也具有随机性,即何时执行中断服务程序不是在程序中安排好的。
7四、断点和中断现场断点:是指CPU执行的现行程序被中断时的下一条指令的地址,又称断点地址。
中断现场:是指CPU转去执行中断服务程序前的运行状态,包括CPU内部各寄存器、断点地址等。
8五、硬件中断和软件中断z早期中断概念的引入,是为解决CPU与外设间的速度匹配问题,提高CPU的工作效率。
中断源主要是由外部硬件产生。
z当今的中断技术,不再限于外部硬件产生中断(称硬件中断或外中断),还可由CPU内部产生(如被零除操作),或者由程序预先安排,即由指令调用中断服务程序。
(称软件中断或内中断)10一、8088CPU的中断分类按中断源的不同,中断分为内中断和外中断。
1、内中断(软中断)指CPU执行某些特殊操作或由INT指令引起的中断①被零除操作或OF=1时执行INTO指令引起②使用DEBUG中的单步或断点设置操作引起③执行INT n 指令引起13但系统通电瞬间或将屏蔽寄存器最高位置“0”可屏蔽NMI;其最高位置“1”又可以开放NMI:MOV DX,A0H ;A0H~BFH为屏蔽寄存器MOV DX,A0HMOV AL,00H MOV AL,80HOUT DX,AL;屏蔽NMI OUTDX,AL;开放NMI 了解15当前指令执行完的含义•CPU正在执行一条指令,执行完本条指令,响应中断;•对于带重复前缀的串指令(如REP MOVSB),执行一次重复和串指令即可响应中断;•对MOV和POP指令,处理对象为段寄存器,以及STI和IRET指令执行完本条指令后,再执行一条指令才响应中断。
19指令中断过程四、8088CPU如何获取中断类型号由前面介绍知,当中断源产生中断请求后,不论是内中断、非屏蔽中断,还是可屏蔽中断,只要满足响应条件,在执行完当前指令后,CPU内部硬件会自动完成响应中断的过程,共七个步骤而第一步就是获取中断类型号。
不同的中断源,8088CPU获取中断类型号的方法不同。
23中断响应周期时序中断申请管理接口的主要功能:1.向CPU的引脚INTR发中断申请信号当有多个外设同时发出中断请求时,能按照一定的优先级顺序,向CPU发出中断申请,使CPU能优先响应优先级最高的外部设备的中断申请。
2.送中断类型号在CPU中断响应周期,针对不同外设的中断请求,向CPU传送不同的中断类型号,使CPU执行相应的中断子程。
在IBM PC机由8259A可编程中断控制器(PIC)来完成。
28二、8259A的引脚、编程结构和工作过程1.8259A的引脚2.8259A的编程结构3.8259A的工作过程292.8259A的编程结构总线 D0 ~ D7 A0 A5 ~ A9 数据线 A0处理部分D0 ~ D7ISR 当前 中断 服务 寄存器片 选 CS 译 码WR INTA INT0 0 0 0 0 0 0 0PR优先级 裁决器0 IRR 0 中断 0 申请 0 寄存器 0 0 0 0IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7ICW1 芯片控制 A0 1 × I3 I4 0 ICW2 中断类型号A0 1 0 0 1 0 1 0 0 1OCW1 中断屏蔽寄存器 IMRIOR IOW INTA INTRRD1ICW3 主从片连接关系0 00 0SP/ENOCW2 优先级设置、发EOI1ICW4 方式控制0 1CA0 CA1 CA2 VCC GND31OCW3特殊屏蔽,查询方式设置1控制部分8259A的编程结构8259A内部有9个 可读写的寄存器 4个初始化命令寄存器 ICW1、ICW2 ICW3、ICW4 3个操作命令寄存器 OCW1(IMR) OCW2、OCW3 当前中断服务寄存器 ISR 中断申请寄存器 IRR8259A中断控制器 处理部分0 ISR 0 当前 0 中断 0 服务 0 寄存器 0 0 0IRR 0 中断申请 0 寄存器 0 PR优先级 裁决器OCW10 0 0 0 0ICW1 芯片控制 1 × I3 I4 ICW2 中断类型号1 0 0 1 0 1 0 0中断屏蔽寄存器 IMR 0 0ICW3 主从片关系 ICW4 方式控制OCW2 0 1 OCW3控制部分32(1) 初始化命令字(ICW1- ICW4) 决定8259A的工作方式 通常是在计算机系统启动时在初始程序设置, 一旦设定,一般在系统工作过程不再改变。
例 开机后,BIOS将8259A初始化为:① IR0~IR7中断申请信号为上升沿触发方式; ② IR0~IR7对应的中断类型号分别为08H~0FH; ③ 优先级IR0最高, IR7最低;(2) 操作命令字(OCW1,OCW2,OCW3) 在应用程序中设定,动态地控制CPU处理中断的过程 (3) ISR和IRR存放当前8259A的状态通过读取 ISR 和 IRR 的内容,可了解当前8259A工作情况333. 8259A 的工作过程 分两步:(1)处理外设中断申请,决定是否向CPU发中断申请信号。
(2)若发中断申请信号,且CPU响应, 则在CPU中断响应周期送出中断类型号。
34(1) 处理外设中断申请,决定是否向CPU发中断申请信号 ① 中断申请寄存器IRR 锁存外部的中断申请。
② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请 是否进入优先级裁决器 PR。
③ 当前中断服务寄存器 ISR 记录CPU正在响应的中断。
④ 优先级裁决器PR 据新进入的中断申请和 ISR的内容, 决定是否发中断申请信号。
详见后文35① 中断申请寄存器IRR 锁存外部的中断申请。
若 IR0~IR7 引脚上有中断申请,则将 IRR 相应位置1总线 D0 ~ D7 A0 A5 ~ A9 IOR IOW INTA INTR 数据线 A0 片 选 CS 译 码 RD WR INTA INT D0 ~ D7ISR 当前 中断 服务 寄存器0 0 0 0 0 0 0 0PRIRR 中断 申请 寄存器优先级 裁决器1 0 0 1 0 1 0 01 0 0 0 0 0 0 0 0 1IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制OCW1 中断屏蔽寄存器 IMR0 0OCW2 优先级、发EOI OCW3 特殊屏蔽设置36总线② 中断屏蔽寄存器 IMR 决定 IRR 中的中断申请是否进入优 先级裁决器 PR: IMR对应位为1,中断申请被屏蔽, 不能进入优先级裁决器。
为0,中断申请未被屏蔽,可进入优先级裁决器 。
数据线 A0 片 选 CS 译 码 RD WR INTA INT D0 ~ D7D0 ~ D7 A0 A5 ~ A9 IOR IOW INTA INTRISR 当前 中断 服务 寄存器0 0 0 0 0 0 0 0PRIRR 中断 申请 寄存器优先级 裁决器1 0 0 1 0 1 0 01 0 0 0 0 0 0 1IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制OCW1 中断屏蔽寄存器 IMR0 0OCW2 优先级、发EOI OCW3 特殊屏蔽设置37上图所示,IR7、4、2被屏蔽掉了。
注:IMR的D7~0分别对应于IRR的D7~0(IR0~7)。
(见教材P219图8-14)③ 当前中断服务寄存器 ISR 记录CPU正在响应的中断。
ISR中的某位为1,表示CPU正在响应此级中断, 即正在执行此中断源的中断子程; ISR中的某位为 0,表示CPU没有或已响应完此级中断, 即不在执行此中断源的中断子程 总线 D0 ~ D7 A0 A5 ~ A9 IOR IOW INTA INTR 数据线 A0 片 选 CS 译 码 RD WR INTA INT D0 ~ D7ISR 当前 中断 服务 寄存器0 0 1 0 0 0 0 0PRIRR 中断 申请 寄存器优先级 裁决器1 0 0 1 0 1 0 01 0 0 0 0 0 0 1IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制OCW1 中断屏蔽寄存器 IMR0 0OCW2 优先级、发EOI OCW3 特殊屏蔽设置38④ 优先级裁决器PR据新进入的中断申请和 ISR的内容, 决定是否发中断申请信号。
如果进入的中断申请比 ISR 中记录的中断优先级高, 则通过 8259A 的 INT 引脚向 CPU发出中断请求信号; 如果进入的中断申请不比 ISR 中记录的中断优先级高,同级或低级, 则不向 CPU 发中断请求信号。
总线 D0 ~ D7 A0 A5 ~ A9 IOR IOW INTA INTR 数据线 A0 片 选 CS 译 码 RD WR INTA INT D0 ~ D7ISR 当前 中断 服务 寄存器0 0 1 0 0 0 0 0PRIRR 中断 申请 寄存器优先级 裁决器1 0 0 1 0 1 0 01 0 0 0 0 0 0 1IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7ICW1 芯片控制 ICW2 中断类型号 ICW3 主从片关系 ICW4 方式控制OCW1 中断屏蔽寄存器 IMR0 0OCW2 优先级、发EOI OCW3 特殊屏蔽设置39(2) 若发中断申请信号,且CPU响应,则在CPU中断响应周期送出中断类型号 CPU接收到 INTR上的中断申请信号后:z 如果 IF 标志为0,则CPU不响应此中断申请信号,即中断申请被IF屏蔽。