1.06k likes | 1.2k Views
补充:中断技术概述. 中断定义: 所谓中断,是指 CPU 在运行程序时,由于 内部/外部事件或由程序事先 安排引起 CPU 中断当前正在运行的程序,而 转到 预先安排的事件处理程序中去。 服务完毕,再返回继续执行 被暂时中止的程序。. 中断返回. 中断请求. 中断响应. 中断服务. 中断处理. 中断过程:. 中断处理的隐操作: 程序状态及断点地址的进栈及出栈。. 中断技术的优点 :. 提高 CPU 效率 提高微机系统 实时处理与控制 能力 提高系统可靠性. 中断源: 能引起中断的外部事件或内部原因 的部件
E N D
补充:中断技术概述 中断定义: 所谓中断,是指CPU在运行程序时,由于内部/外部事件或由程序事先安排引起CPU中断当前正在运行的程序,而转到预先安排的事件处理程序中去。服务完毕,再返回继续执行被暂时中止的程序。
中断返回 中断请求 中断响应 中断服务 中断处理 中断过程: 中断处理的隐操作:程序状态及断点地址的进栈及出栈。
中断技术的优点: • 提高CPU效率 • 提高微机系统实时处理与控制能力 • 提高系统可靠性
中断源:能引起中断的外部事件或内部原因 的部件 如键盘、时钟、故障源和运算异常等等 • 中断系统:为实现中断而设置的软硬件系统。 • 中断系统的功能:能完成中断过程、实现优先权排队、实现中断嵌套
4.4.3中断操作(P99) • 8086的中断系统采用向量中断机制 • 能够处理256个中断 • 用中断类型号0~255区别 1 8086/8088的中断分类 硬件中断 (非屏蔽中断和可屏蔽中断) 软件中断(中断指令和内部中断)
非屏蔽中断 • 通过非屏蔽中断请求信号向微处理器提出的中断请求,微处理器无法禁止,将在当前指令执行结束予以响应,这个中断被称为非屏蔽中断 • 8088的非屏蔽中断的类型号为2,非屏蔽中断请求信号为NMI • 非屏蔽中断主要用于处理系统的意外或故障。例如: • 电源调电时的数据保护 • 存储器读写错误的处理
可屏蔽中断 • 外部通过可屏蔽中断请求信号向微处理器提出的中断,微处理器在允许可屏蔽中断的条件下,在当前指令执行结束予以响应,同时输出可屏蔽中断响应信号,这个中断就是可屏蔽中断 • 8086的可屏蔽中断请求和响应信号分别是INTR和INTA#;由IF标志控制可屏蔽中断是否允许响应;类型号来自外部中断控制器8259A • 8086通常需要配合中断控制器8259A共同处理可屏蔽中断 • 可屏蔽中断主要用于主机与外设交换数据 IF控制可屏蔽中断的响应
指令中断 • 在执行中断调用指令INT n时产生的一个类型号为n(0 ~ 255)的内部中断,称为指令中断
除法错中断 • 在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则产生一个类型号为0的内部中断,称为除法错中断 例如: mov bl,0 idiv bl ;除数BL=0,产生除法错中断 mov ax,200h mov bl,1 div bl ;商=200H,不能用AL表达 ;产生除法错中断
单步中断 • 若单步中断标志TF为1,则在每条指令执行结束后产生一个类型号为1的内部中断,称为单步中断 例如:DEBUG.EXE调试程序的单步命令T就利用单步中断实现对程序的单步调试 -T=200 6
断点中断(INT 3) • 其中类型号为3的内部中断比较特别(生成一个字节的指令代码:11001100),常用于程序调试,被称为断点中断 例如:DEBUG.EXE调试程序的运行命令G设置的断点,就是利用INT 3指令实现的 -G=100 120
溢出中断(有符号数加减运算) • 在执行溢出中断指令INTO时,若溢出标志OF为1,则产生一个类型号为4的内部中断,被称为溢出中断 例如: mov ax,2000h add ax, 7000h ;2000H+7000H=9000H,溢出:OF=1 into ;因为OF=1,所以产生溢出中断
2 中断向量和中断向量表 • 中断向量:中断服务程序的入口地址(首地址) • 逻辑地址含有段地址CS和偏移地址IP(32位) • 每个中断向量的低字是偏移地址IP、高字是段地址CS,需占用4个字节 • 8086微处理器从物理地址00000H开始,依次安排各个中断向量,类型号也从0开始 • 256个中断占用1KB区域,就形成中断向量表 类型号为N的中断向量的 物理地址=N×4
例:中断类型号为10的中断处理子程序存放在1234H:5678H开始的内存区域中,求中断向量地址及其每个单元中所存放的数值。例:中断类型号为10的中断处理子程序存放在1234H:5678H开始的内存区域中,求中断向量地址及其每个单元中所存放的数值。 • 10×4=40=28H • 求得中断向量物理地址是00028H~0002BH • 按8086存储原则,从00028H~0002BH的每个单元中分别存放78H、56H、34H、12H
4 硬件中断的响应和时序 可屏蔽中断的响应过程 : ①读取中断类型码 ②将标志寄存器FR的值推入堆栈(IF=?) ③把标志寄存器的IF和TF清零 ④将断点保护到堆栈中。(CS:IP) ⑤寻找中断向量,转入中断处理程序
说明: • 在执行中断服务程序时出现NMI信号,仍然能响应 • 中断响应延迟一指令周期再响应的情况:出现LOCK前缀封锁总线或正执行往段地址寄存器送值的指令,如:MOV SS,AX • 在遇到等待指令WAIT或串操作指令(MOVSB/STOSB/LODSB等)时,可以响应,但要等一个操作完成且必须注意保护现场,以免返回后无法正确执行
中断响应用2个总线周期 第1个总线周期,通知外设,CPU准备响应中断; 第2个总线周期,外设发送中断类型码
可屏蔽中断实际总线时序 ①读取中断类型码( 2 ) ②将标志寄存器FR的值推入堆栈( 1 ) ③把标志寄存器的IF和TF清零( 0 ) ④将断点保护到堆栈中( 2 ) ⑤寻找中断向量,转入中断处理程序( 2 )
5 中断处理子程序 ① 进一步保护中断现场 ② 开放中断(原因) ③ 中断处理的具体内容 ④ 弹出堆栈指令 ⑤中断返回指令(? ) IRET
6 软件中断 特点: ① 用一条指令进入中断处理子程序,并且,中断类型码由指令提供。(INT n) ② 不执行中断响应总线周期,也不从数据总线读取中断类型码。 ③ 不受中断允许标志IF的影响 ④ 执行过程中可响应外部硬件中断 ⑤软件中断没有随机性,主、服程序之间存在参数传递
9.1 中断控制器8259A • 9.1.0 8259A的功能和特点 • 9.1.1 8259A的内部结构 • 9.1.2 8259A的工作方式 • 9.1.3 8259A的初始化命令字和操作命令字 • 9.1.4 8259A使用举例 • 9.1.5 8259A芯片的级联使用
1.功能: (1)对中断请求接收、优先级排队、最高级中断送CPU; (2)中断得到响应后,负责判断是否进行中断嵌套。 2.特点: (1)能管理8级中断,或1主8从的64级中断; (2)可编程;
INTA 控制部件 INT D7~D0 数据 总线 缓冲器 RD 中断服务寄存器 优先权判别器 中断请求寄存器 IR0 WR 读/写 控制 逻辑 A0 CS IR7 CAS0 级联 缓冲器 比较器 CSA1 CAS2 中断屏蔽寄存器 SP/EN 9.1.1 8259A的内部结构
1.数据总线缓冲器 • D0~D7接数据总线低8位(AD0~AD7) • 接收命令字(8位) • 输出中断类型码(8位)、查询字(8位)和相关寄存器的状态(8位)
2. 读/写控制电路 • A0指出8259内部的端口地址,分2个,且奇地址>偶地址;(A0接8086地址总线哪根?接8088哪根?)
3. 级联缓冲/比较器 • CAS2~CAS0用于指出8个从片的地址; • SP#/EN#可用于输入/输出,输入(SP#)决定主(1)/从片(0),输出(EN#)启动总线驱动器8286(缓冲器)工作(见P89图4-12)。
4. 中断请求寄存器IRR • 8位寄存器,可锁存由外部输入的中断请求信号IR7~IR0 5. 中断服务寄存器ISR • 8位寄存器,用来记录正在处理中的中断请求
6. 中断屏蔽寄存器IMR 8位寄存器,用来存放对各级中断请求的屏蔽信息。 7. 优先权判别器PR 多个中断同时产生,判断优先响应哪个 出现多重中断,判断是否打断当前中断操作
8. 控制部件 • 输出中断请求信号INT至CPU • INTA#接收来自CPU的中断应答信号,应为2个负脉冲才有效;
控制部件组成 控制部件
控制部件(7个寄存器) • ICW1~ICW4(用于初始化,一般工作过程中不再改变) • OCW1~OCW3(用于中断处理的动态控制,可多次修改)
CPU中断响应之后8259的动作: • 1)第一个负脉冲:IRR锁存失效,ISR相应位置1,IRR相应位清0; • 2)第二个负脉冲:送出中断类型码;若是中断自动结束方式,则ISR相应位清0。
9.1.2 8259A的工作方式 1. 设置优先级的方式(4) 2 . 屏蔽中断源的方式(2) 3. 结束中断处理的方式(3) 4 . 连接系统总线的方式(2) 5 . 引入中断请求的方式(3)
1. 设置优先级的方式 • (1)全嵌套方式:(默认方式) • 0级最高,只进行高级中断嵌套。PR比较ISR与IRR中优先级高低决定是否中断嵌套。
(2)特殊全嵌套方式:(级联系统) • 0级最高,但同级中断也会响应、嵌套。级联系统中的主片必须使用该方式,保证来自同一从片但不同优先级的中断请求能被响应;但该方式又不适合在中断请求频繁的场合下使用。
(3)普通循环方式:(优先级相同的系统) • 设备中断请求被响应并执行中断服务程序后,其优先级自动降为最低,原先低一级中断成为最高优先级。但该方式开始总是IR0优先级最高。
(4)特殊循环方式:(优先级相同的系统) • 与普通循环方式唯一不同是一开始的最低、最高优先级由程序确定,而非IR0。
2 . 屏蔽中断源的方式 • (1)普通屏蔽方式:(不能改变ISR相应位的值) • 通过OCW1即IMR设置,使相应的标志位为1即屏蔽。但注意屏蔽一般只能是暂时的,例如,计算机网络通信时,接收中断优先级较高,发送时先屏蔽,发送完要解除,以免接收无法进行。
(2)特殊屏蔽方式:(能改变ISR相应位的值)(2)特殊屏蔽方式:(能改变ISR相应位的值) • 通过OCW3设置,用于中断服务程序中仅对本级中断进行屏蔽。对IMR置1的同时使ISR的相应位清0,使得低和高级中断都能被响应。
3. 结束中断处理的方式 • 必要性:中断服务程序结束后,要使相应ISn清0,否则,低级或同级的中断再就不可能被响应,导致中断系统功能异常。 • 区别:就是使ISn清零的方法不同。
(1)中断自动结束(AEOI)方式:(适用于只有1片8259且中断不嵌套)(1)中断自动结束(AEOI)方式:(适用于只有1片8259且中断不嵌套) • ICW4中的AEOI位设置,CPU响应中断即自动清0相应的ISn,在INTA#的第二个负脉冲时完成。
(2)一般中断结束(EOI)方式:(适用于全嵌套方式,即知道优先级的情况下)(2)一般中断结束(EOI)方式:(适用于全嵌套方式,即知道优先级的情况下) • CPU发一般中断结束命令(OCW2中EOI为1,SL为0),使8259当前ISR中最高的非零IS位复位