中断概念8086
NMI中断请求输入线上输入 用中断指令使CPU响应中断
中断类型
可屏蔽中断
CPU响应中断的方式
开中断指令(IF=1) 响应 关中断指令(IF=0) 屏蔽INTR上来的中断请求 CPU必须予以响应,不能由软件指令屏蔽
非屏蔽中断
软件中断
CPU只要执行该指令,即完成相应的中断功能
8086中断向量
• 中断向量与中断向量表 中断向量:每种中断处理程序的首地址 称为中断向量。 中断向量表:8086将内存最低地址的1K 单元作为中断向量表,存放256种中断处 理程序的入口地址,每个地址占4字节。 中断向量表的分配如下图所示:
2.设置新中断向量: PUSH DS MOV AX, SEIN MOV DS, AX ; 新中断向量段地址放DS MOV DX, OFIN ;新中断向量偏移地址放DX MOV AL, N ;利用原中断类型码 MOV AH, 25H INT 21H ; 设置新的中断向量 POP DS 3.恢复原中断向量
•中断处理
保护现场
– 保护中断服务程序中用到的寄 存器和状态标志的内容
中断服务程序
– 相应的中断源服务,完成一定 的I/O操作
push AX push BX ……
恢复现场
– 完成中断服务后,将保存在堆 栈中的现场数据恢复
pop BX pop AX
……
开中断和中断返回
– IRET (中断返回指令)
必要性及应用
中断功能便于实现
1.分时操作
CPU和外设同时工作;CPU可以通过 分时操作启动多个外设同时工作,统一 管理。大大提高了CPU的利用率,也提 高了输入、输出的速度。
当计算机用于实时控 制时,中断是一个十分 重要的功能。现场的各 3.故障处理 个参数、信息,需要的 4.主机与外设之间的速度匹配 话可在任何时候发出中 断申请,要求CPU处理; CPU就可以马上响应 计算机在运行过程中,往往会出现事 (若中断是开放的话) 先预料不到的情况,或出现一些故障: 如电源突跳,存储出错,运算溢出等等。 加以处理。这样的及时 处理在查询的工作方式 计算机就可以利用中断系统自行处理, 是做不到的。 而不必停机或报告工作人员。
例 用DOS功能调用修改中断向量,假设原中断服务 程序的中断号为n,新中断服务程序入口地址的段基址 为SEIN,偏移量为 OFIN。中断向量修改的程序段为:
1.获取原中断向量: MOV AL, N ;N为指定中断号 MOV AH, 35H INT 21H ; 取原中断向量到ES:BX PUSH ES PUSH BX ; 保存原中断向量,入栈 ……
8086中断时序
8086对外部硬件中断请求INTR的响应: 当INTR有一高电平,即有可屏蔽中断请求。 若此时IF=1且当前指令执行完,进入中断响 应周期,处理过程如下: INTA*在两个总线周期中分别发出有效信号, 在第二个周期中8086读到中断类型码,然后 乘以4,得到中断向量。 下一条指令地址CS和IP入栈,标志寄存器入 栈,清除IF和TF标志位。
8086 中 断 分 类 图
中断的分类
1. 可屏蔽中断(Maskable Interrupt)
INT
2. 非屏蔽中断(Non Maskable Interrupt)
NMI
3. 软件中断(Software Interrupt)
中断类型
可屏蔽中断
非屏蔽中断 软件中断
中断请求信号
INTR中断请求输入线上输入
0014H 0013H
Type 4 8086 专 用 5 个
IP
CS IP CS IP CS IP CS IP
溢出中断 0010H 000FH
断点中断 000CH 000FH 非屏蔽中断
Type 3
Type 8
0008H 0ቤተ መጻሕፍቲ ባይዱ07H
单步中断 0004H 0003H 除数为 0 0000H
Type 1
中断服务程序
对强迫中断的服务程序具有随机性 要考虑可能在程序的什么指令处发生, 要保护什么内容,才能保证返回断点后正常工作。 对人为设置的软件中断与子程序调用的区别
返回指令不同
子程序返回用RET 中断服务程序返回用IRET 处理内容不同,中断一般处理I/O操作。
4
2.实时处理
2
外设中断请求
中断源
实时时钟中断请求 控制对象中断源
强迫中断 引起的中断都是随机。
故障引起的中断 人为设置的中断 人为设置的中断,不是随 机的,故称为自愿中断。
3
中断处理过程
中断处理过程
包括中断请求、中断排队、中断响应、中断 处理、中断返回等全过程。 中断技术 –对中断全过程的分析、研究及实现的方法
POP POP MOV MOV INT DX ;恢复原中断向量,出栈 DS AL, N AH, 25H 21H ; 恢复原中断向量
中断的基本概念 1 中断的定义及必要性
2
3 4
中断源
中断处理过程 8086中断系统
1
中断的定义及必要性
定义:所谓中断是指中央处理器CPU正在 处理某件事的时候,外部发生了某一事件, 请求CPU迅速处理,CPU暂时中断当前的 工作,转入处理所发生的事件,处理完后, 再回到原来被中断的地方,继续原来的工 作。这样的过程称为中断。
8086中断响应时序
第一个中断响应总线周期
CLK T1 T2 T3 T4
第二个中断响应总线周期 T1 T2 T3 T4
ALE
INTA*
AD7~AD0
TYPE
总结:中断操作的5个步骤:
(1) (2) (3) (4) (5) 取中断类型号 计算中断向量指针 取中断向量,偏移地址送IP,段地址送CS 转入中断处理程序 返回到断点
中断类型码
用 户 定 义 224 个 Type 225
中断向量
: CS IP :
中断向量指针
03FFH 03FCH 0083H 0080H 007FH
8086/8088中断向量表 占内存0000H段
Type 32
CS IP CS IP : CS IP CS
保 留 27 个
Type 31
007CH
Type 5
• •
8086中断系统
8086微处理器有处理256种中断的能力。 每个中断分配给一个中断类型码,在0~255 之间,用一字节表示,也称为256种类型中断。 • 256种类型中断分为硬件中断和软件中断。 硬件中断:外部硬件电路产生的中断。 软件中断:8086操作过程中发生异常事件或 执行中断指令INTn。
指令/CPU 启 动 的
软件中断(内部)
硬件中断(外部)
INTn 指令
非屏蔽中断请求 (2)
NMI 中 断 逻 辑 INTR
INT3 断点 中断
INTO 溢出 中断 OF=1 (4) 单步 中断 TF=1 (1) 除数为 0 中断 (0)
中 断 控 制 器
可 屏 蔽 中 断 请 求
(3)
8259A
例:设中断 INT 4AH (中断类型号) 4AH4 = 128H (中断向量指针) 4AH4+2 = 12AH (128H) IP (中断向量:
中断处理程序入口地址)
(12AH) CS
中断向量的修改:使用系统的中断资源 利用DOS功能调用21H中的35H和25H号功能修改中断向量 1.获取原中断向量: AH=35H AL=中断类型号 INT 21H 返回时送ES:BX=旧中断向量段地址:偏移地址 2.设置新中断向量: AH=25H AL=中断类型号 DS:DX=新中断向量段地址:偏移地址 INT 21H 3.恢复原中断向量 AH=25H AL=中断类型号 DS:DX=旧中断向量段地址:偏移地址 INT 21H
•中断排队
多中断源同 时发出中断 请求,CPU根 据中断的优 先级判断优 先执行的中 断请求。 中断嵌套
CPU正在执行 主程序 CPU正在执行 低级中断服务 程序 CPU正在执行 高级中断服务 程序 CPU正在执行 低级中断服务 程序
挂起的中断
•中断响应
• 条件:IF=1,执行完一条指令 • 保护断点 将下一条指令的CS和IP及目前标志寄存 器FR的内容压入堆栈 • 寻找中断服务程序入口地址
Type 0
8086中断类型码
• 8086将中断类型码乘4,得到中断向量 表的入口地址,例如: 类型码=0CH,中断向量表指针=0030H • 8086从0030H开始读取4字节中断处理程 序的入口地址,前两字节装入IP,后两 字节装入CS,8086执行中断处理程序。
中断向量的装入
• 中断向量的装入方法:用MOV指令 • 假设中断类型号为60H,中断服务程序的偏移地 址是1234H,段地址5678H • MOV AX,00H • MOV ES,AX; 0段 • MOV BX,60H*4; (=180H)中断向量指针 • MOV AX,1234; 中断服务程序偏移地址 • MOV ES:[BX],AX;装入偏移地址 • MOV AX,5678H; 中断服务程序段地址 • MOV ES:[BX+2],AX;装入段地址