8086中断系统讲解
8086-6-中断
8086-6-中断中断(8086)中断就是打断处理器当前的执⾏流程,去执⾏⼀些和当前⼯作不相⼲的指令,执⾏完之后,还可以返回到原来的程序流程继续执⾏。
就好⽐你在打游戏突然⽼板来电话了,你不得不先停⽌打游戏然后来处理这件更为重要的事件,然后打完电话之后继续打游戏。
中断的⼀些概念:中断号:由于CPU需要通过对不同类型的中断进⾏不同处理,所以每种类型的中断都被统⼀编号,这称为中断类型号、中断向量或者中断号。
Intel处理器允许256 个中断,中断号的范围是0~255中断源:中断信号的来源,或者说产⽣中断的设备,被称为中断源。
中断嵌套:当⼀个中断事件正在处理时,如果来了⼀个优先级更⾼的中断事件时,允许暂时中⽌当前的中断处理,先为优先级较⾼的中断事件服务,这称为中断嵌套。
实模式下的中断向量表(Interrupt Vector Table,IVT):所谓中断处理,其实就是处理器要执⾏⼀段与该中断有关的程序(指令)你也可以将其当作⼀个函数。
处理器可以识别256 个中断,那么理论上就需要256 段代码。
这些代码实际存放的位置并不重要,重要的是,在实模式下,处理器要求将它们的⼊⼝点也就是起始地址集中存放到内存中从物理地址0x00000 开始,到0x003ff 结束,共1KB 的空间内,这就是所谓的中断向量表。
每个中断的⼊⼝点地址在中断向量表中占2 个字,分别是中断处理代码的偏移地址和段地址。
中断0的⼊⼝点位于物理地址0x00000 处,也就是逻辑地址0x0000:0x0000;中断1 的⼊⼝点位于物理地址0x00004 处,即逻辑地址0x0000:0x0004;其他中断⼊⼝点地址以此类推。
中断分类:中断⼤致上可以分为硬件中断和软件中断(简称为软中断)。
顾名思义,硬件中断由硬件来提供,⽐如说:CPU,⿏标键盘等。
⽽软件键盘由内部的代码来定义。
硬件中断:硬件中断还可以分为外部硬件中断和内部硬件中断,外部硬件中断是指除CPU以外的硬件对应的中断,⽽内部硬件中断是内部CPU对应的中断。
第五章 8086的中断系统
Y
Y
IF=1 非屏蔽中断 N 可屏蔽中断 单步中断
Y
中断响应周期 读中断向量号
低
中断响应过程
标志寄存器入栈 TEMP=TF,IF=TF=0
( 1) ( 2)
8086各种中断源的优先 CS:IP入栈
获取中断向量 权,实际上是指被识别
( 3)
( 4)
出来的先后; 还有NMI
N
Y
Y 多种中断同时请求时, TEMP=1 N 最先响应的则可能是单 执行服务程序 弹出 CS:IP 步中断或 NMI 中断。 弹出标志寄存器 返回被中断程序 ( 6) ( 5)
硬件中断
由CPU外部中断请求引脚NMI和INTR引起的
中断称为硬件中断(亦称为外部中断) ① 非屏蔽中断
通过CPU的NMI(Non-Maskable Interrupt)引
脚进入, NMI被响应时, 自动产生2号类型中断。
它不受中断允许标志的屏蔽,微处理器无法
禁止,将在当前指令执行结束予以响应;
5.2 中断处理过程
1. 中断过程
中断请求:
中断源向CPU发出请求中断信号。中断信号将被锁存, 直到CPU响应中断后,中断请求信号才被清除。
中断响应:
CPU 在执行每条指令的最后一个时钟周期检测中断请求 信号。若发现中断请求信号有效,在允许中断的条件下, CPU响应中断。
CPU会自动完成3项任务: ① 关闭中断,以禁止其它中断请求。
② 断点 (IP 和 CS) 和标志寄存器内容入栈保护。 ③ 获得中断服务程序入口地址,转中断服务
程序。
中断处理:
① 保护现场
•
相关工作寄存器的内容压栈保护。
7.48086中断系统
地址(中断向量),然后转到该入口地址去执行中断
服务程序。
8086/8088的向量中断
◆ 中断类型号——8086/8088最多能管理256个中断,统一编号
为0~255(00H~FFH)。 ◆中断向量——中断服务程序的入口地址,即段基址CS:偏 移址IP 。 ◆中断向量表——8086/8088系统在内存的最低1K字节(0段 的0000H~03FFH)建立了中断向量表,按中断类型号顺序 存放256个中断向量。 ◆中断向量表地址——中断向量在中断向量表中的地址。中断 向量表地址与中断类型号的关系为:
×4
CS
3. 8086/8088中断响应过程——软件 中断
软件中断类型号n由系统固定分配(专用)或由中断(INT) 指令指定,所以软件中断能自动获得中断类型号n 。 必须事先设置中断类型号n 的中断向量表。 软件中断响应过程: 状态寄存器和中断断点(当前的CS:IP ,返回地址) 压入 堆栈; 中断类型号n×4,得到中断向量表地址; 读取连续4个字节的内容——中断向量,送入IP和CS;
软件中断(内部中断)——中断指令
INT n引起的中断
中断指令INT n引起的(中断类型号为n):中断 指令的指令格式为 INT n,操作数n就是中断类型 号。当CPU执行完毕中断指令INT n后,就会立 即产生一个中断类型号为n的中断。
硬件中断(外部中断)——不可屏蔽 中断
不可屏蔽中断(非屏蔽中断)NMI(中断类型 号为2):就是用户不能通过CPU内的中断允许 触发器IF控制的中断,由8086CPU的NMI管脚引 入。NMI中断请求采用上升沿触发方式,这种 中断一旦产生,在CPU内部直接生成中断类型 号02。一般用于紧急故障处理。
微机原理15.§6.3 8086中断系统
§6.3 8086中断系统
8086具有一个简单而灵活的中断系统,中断由 类型号0-255指定,既可用软件也可用硬件来 启动中断,中断源可来自CPU内部,也可来自 外围芯片,如下图所示。
2013-7-11
1
第六章 中断
非屏蔽中断
§6.3 8086中断系统
IRQ0 IRQ1 IRQ2 中断逻辑 8259A IRQ3 IRQ4 IRQ5
00FCH 类型63中断入口 0100H 类型64中断入口
03FCH 类型255中断入口
14
......
......
2013-7-11
13
第六章 中断
§6.3 8086中断系统
8086中断矢量表
专 用 中 断 系 统 备 用 用 户 使 用
2013-7-11
0000H 0004H 0008H 000CH 0010H 0014H
类型0中断入口(除法出错) 类型1中断入口(单步中断) 类型2中断入口(NMI) 类型3中断入口(断点中断) 类型4中断入口(溢出中断) 类型5中断入口
2013-7-11
6
第六章 中断
§6.3 8086中断系统
1) 外部中断系统(如8259A)响应第二个INTA,把 中断类型号 n 送上数据总线; 2) CPU读取中断类型号,乘以4得到中断矢量表 入口地址;
3) 标志寄存器入栈,清除IF、TF,并把断点地址 入栈;
4) 从中断矢量表中取出中断服务程序的入口地址, 装入CS和IP。
2013-7-11
7
第六章 中断
§6.3 8086中断系统
2. NMI 非屏蔽中断请求NMI通知CPU,系统发生了灾 难性事件,如电源掉电。 NMI请求不能被禁止,应立即响应。它的优先 级比INTR线上的任何一级中断的优先级都高。 发生NMI时,CPU不需要发中断响应周期,用 INTA去读取中断类型码。CPU规定NMI的中断 类型号为2。因此CPU接收到NMI请求后,自动 启动NMI处理程序。
中断概念8086
8086中断响应时序
第一个中断响应总线周期
CLK T1 T2 T3 T4
第二个中断响应总线周期 T1 T2 T3 T4
ALE
INTA*
AD7~AD0
TYPE
总结:中断操作的5个步骤:
(1) (2) (3) (4) (5) 取中断类型号 计算中断向量指针 取中断向量,偏移地址送IP,段地址送CS 转入中断处理程序 返回到断点
指令/CPU 启 动 的
软件中断(内部)
硬件中断(外部)
INTn 指令
非屏蔽中断请求 (2)
NMI 中 断 逻 辑 INTR
INT3 断点 中断
INTO 溢出 中断 OF=1 (4) 单步 中断 TF=1 (1) 除数为 0 中断 (0)
中 断 控 制 器
可 屏 蔽 中 断 请 求
(3)
8259A
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.恢复原中断向量
NMI中断请求输入线上输入 用中断指令使CPU响应中断
中断类型
可屏蔽中断
CPU响应中断的方式
开中断指令(IF=1) 响应 关中断指令(IF=0) 屏蔽INTR上来的中断请求 CPU必须予以响应,不能由软件指令屏蔽
非屏蔽中断
软件中断
CPU只要执行该指令,即完成相应的中断功能
8086中断向量
• 中断向量与中断向量表 中断向量:每种中断处理程序的首地址 称为中断向量。 中断向量表:8086将内存最低地址的1K 单元作为中断向量表,存放256种中断处 理程序的入口地址,每个地址占4字节。 中断向量表的分配如下图所示:
《微机原理》8086与PC(2-2)
许临时开放对低优先级中断源的服务
8259A的工作方式(续)
中断结束方式
中断自动结束方式:ISR中在响应时自动置1的位在进
入中断服务程序后自动清0
一般中断结束方式:在全嵌套方式下,EOI命令中不
指定结束的中断级,约定结束ISR中的最高优先级中 断,对应位将被复位
中断向量表的构成
中断向量表:把所有中断源的中断向量集中在
一起,形成中断向量表
8086在内存中地址为00000H~003FFH的 存储区内建立中断向量表,共存放256个中断向 量,每个向量占4个字节,IP在低地址单元、 CS在高地址单元
此表的查询索引为中断类型号
中断类型号及其获取
中断类型号:系统分配给每个中断源的代
为I/O设备服务
中断服务程序执行 中断返回(IRET)
断点和FLAGS从 堆栈中弹出(断点恢复)
恢复现场
给中断控制器发中 断结束(EOI)命令
回到中断前运行 的程序继续执行
中断传送流程
返回
8259A芯片
可编程中断控制器8259A主要功能为:
(1)对8个外部中断源进行管理,具有8级优 先权控制,通过级连可扩展至64级优先权控制。
五、8253/8254定时/计数器
主要功能
3个独立的16位计数器 每个计数器可以按二进制或BCD码计数 计数速率可达2MHz(8254-2达10MHz) 每个计数器有6种工作方式,可编程设置和改
变 输入输出引脚与TTL电平兼容
8253内部结构图
计数器结构
8253有三个独立的计数器(计数通道)
计数初值寄存器(16位)
先读写最低有效字节再
读写最高有效字节
第8章中断(8.2-8086中断系统)
8088CPU中断响应周期时序
第 一 个 中断响应周期
第 二 个 中断响应周期 T1
T1
CLK INTA AD7~AD0
T2
T3
T4
T2
T3
T4
向量类型
30
中断服务和返回
(5) 中断服务程序:保护现场、中断处理、恢复现场 (6) IRET ; (IP)←((SP+1),(SP)) (SP)←(SP+2) (CS)← ((SP+1), (SP)) (SP)←(SP+2) (FR)← ((SP+1), (SP)) (SP)←(SP+2)
§8.2 8086/88中断系统 (p241)
§8.2.1 中断结构 8086/88系统可处理256个中断源。
编号为0~255——中断类型号
分为:硬件(外部)中断 软件(内部)中断
1
CPU
INT n
NMI
中断逻辑
非屏蔽中断源
8259A
INTR 中断
控制 器 INT 指令 INTO 指令 除法 错误 单步 中断
的向量地址 中断向量。
0000:0049H 0000:004AH
0000:004BH
中断响应后 (CS)及(IP)的内容 ? (SP)的内容 ? (执行前(SP)=122AH) 19
例2:某段内存单元内容(16进制数)如下:
0000:00b0H AA 22 23 56 78 9A AB 11 56 3D BC 2A 2D …20 0000:00c0H BB 11 21 5B 18 9A 00 35 67 3D A1 6A 7D …BB C 则执行INT 31h 的中断服务程序的入口地址为_______
第6章 8086中断系统
条件:
CPU开中断 开中断 有级别更高的中断源请求
6. 中断系统功能 中断系统功能
(1)进行中断优先权排队 ) (2)实现中断嵌套 ) (3)自动响应中断 )
CPU在响应中断时通常要自动做三件事: 在响应中断时通常要自动做三件事: 在响应中断时通常要自动做三件事 自动关闭中断和把原执行程序的断点地址压入堆栈 按中断源提供的中断矢量自动转入相应中断服务程序 执行 自动或通过安排在中断服务程序中指令来撤消本次中 断请求, 断请求,以避免再次响应本次中断的请求
2. 中断源 中断源
外部设备中断源 控制对象中断源 故障中断源 定时脉冲中断源
3. 中断的分类 中断的分类
可屏蔽中断 非屏蔽中断 软件中断
内部中断
INTR(8086)/INT(51) ) ) NMI(8086) ) 除具有中断功能的接口电路 具有中断功能的接口电路
(4)中断返回 )
§6.3 8086/8088中断系统 中断系统
1. 中断分类 中断分类
中断特点: 中断特点: 特点 矢量型中断, 个中断矢量号(设备号 矢量型中断,有256个中断矢量号 设备号 (0~255) 个中断矢量号 设备号) ~ 非屏蔽中断 硬件中断
(外部中断) 外部中断)
NMI引入,1个,不受 的屏蔽 引入, 个 不受IF的屏蔽 引入 INTR引入,多个,受IF的屏蔽 引入,多个, 引入 的屏蔽
4. 软件中断(内部中断) 软件中断 内部中断 中断)
INT n
中断矢 量号
特点: 特点: 中断矢量号由CPU内部自动提供,不需要执行中断响 内部自动提供, 中断矢量号由 内部自动提供 应总线周期去读取矢量号 除单步中断外,所有内部中断都不可以用软件屏蔽, 除单步中断外,所有内部中断都不可以用软件屏蔽, 即都不能通过执行CLI指令使 清0来禁止对它们的响 指令使IF清 来禁止对它们的响 即都不能通过执行 指令使 应 除单步中断外, 除单步中断外,所有内部中断的优先级别均高于外部 中断 软中断不具有随机性
中断系统 计算机原理
统板上RAM奇偶错,I/O通道奇偶错和8087异常中断。
中断屏蔽寄存器
(IMR)
计算机原理讲义
8259内部结构说明
※ 内部结构说明 IRR — 中断请求寄存器,保存 8个输入端IR0~IR7的中断申请状态,输入可 高电平有效,也可上升沿有效; ISR — 中断服务寄存器,保存CPU正在处理的中断请求; IMR — 中断屏蔽寄存器,对中断申请进行屏蔽控制;
操作命令寄存器组: OCW1~OCW3 INT 中断申请输出,高电平有效,可连接8086 INTR引脚 /INTA 中断响应输入,接收8086发出的中断响应信号,有效时8259应输 出中断类型码
计算机原理讲义
※ 内部结构说明
D7~D0 双向三态数据线,传送数据 /RD 读信号,低电平有效
CS WR RD /CS 片选信号,低有效,给8259分配地 D7 D6 址 D5 D4 A0 用于选择8259内部不同的寄存器。 D3 D2 CAS2~CAS0 级联信号线,当8259为主 D1 D0 片时为输出,从片时为输入 CAS0 CAS1 SP/EN 在非缓冲工作方式时,用作输入, GND
计算机原理讲义
8086 中断结构
二. 软件中断
1. 除法溢出中断( DIV和IDIV)(INT 0)
若除数为0或商超过寄存器所能表达的范围,则产生类型为0的软件中断
2. 单步中断 (INT 1) 若TF=1,则CPU每执行完一条指令后便产生类型码为1的软件中断 3. 执行 INT 指令引起的中断 (INT n) 执行INT n指令则会引起中断类型码为n的软件中断 4. 执行 INTO 指令引起的中断(INT 4) 若OF=1,则指令INTO引起中断类型码为4的软件中断
第8章中断(8.2-8086中断系统)
1
CPU
INT n
NMI
中断逻辑
非屏蔽中断源
8259A
INTR 中断
控制 器 INT 指令 INTO 指令 除法 错误 单步 中断
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
2
可 屏 蔽 中 断 源
1,硬件中断 ,
分为 非屏蔽中断 可屏蔽中断
3
1),非屏蔽中断 ,
从NMI引脚(17脚)输入 NMI引脚 17脚 引脚( 不受IF控制 不受IF控制
中 断 向 量 表
0000:0000H 0001H 0002H 0003H 0004H 0006H 0008H 000AH 000CH 000EH 0010H 0012H 0014H 0016H
007CH 007EH 0080H 0082H 类型32中断矢量(用户可用) 类型31中断矢量(保留)
(IP) (CS) (IP) (CS) 224个用户可用
向量地址
中断向量
0000:0048H
60 70 80 90
IPL IPH CS L CS H
的向量地址 中断向量. 中断向量.
0000:0049H 0000:004AH 0000:004BH
中断响应后 (CS)及(IP)的内容 ? 122AH (SP)的内容 ? (执行前(SP)=122AH) 执行前( 19
20
? 中断向量 总之: 总之:类型号
类型号× 向量地址连续4个单元 向量地址连续 类型号×4 =向量地址连续 个单元 存放中断向量
21
8086系统的 8086系统的256个中断源分为三类: 系统的256个中断源分为三类 个中断源分为三类: 第一类: 第一类:专用中断 0~4号,系统定义. 系统定义. 第二类: 第二类:系统保留的中断 5 ~ 31号 , 共 27个 , 为保持系统间的兼容及与将来 31 号 27 个 Intel系统的兼容 Intel系统的兼容. 系统的兼容. 第三类: 第三类:用户定义 32 ~ 255 号 , 共 224 个 , 原则上可由用户定义为软 32~ 255号 224个 中断( 或硬中断(通过INTR引入 引入, 中断(INT n),或硬中断(通过INTR引入,使用 时要用户装入相应的中断向量) 时要用户装入相应的中断向量). 在这类中断中断中,有的系统已分配有固定的用处, 在这类中断中断中,有的系统已分配有固定的用处, 如类型号20H FH为DOS软中断 用户应避开. 软中断, 如类型号20H~3FH为DOS软中断,用户应避开.
8.2 8086中断系统
⑶ 溢出中断
在执行溢出中断指令INTO时,若溢出标志 OF为1,则产生一个向量号为4的内部中断, 被称为溢出中断 例如:
MOV AX,2000H ADD AX, 7000H ;2000H+7000H=9000H,溢出:OF=1 INTO ;因为OF=1,所以产生溢出中断
(4) 不可屏蔽中断
通过不可屏蔽中断请求信号向微处理器提 出的中断请求,微处理器无法禁止,将在 当前指令执行结束予以响应,这个中断被 称为不可屏蔽中断 8086的不可屏蔽中断的向量号为2,不可屏 蔽中断请求信号为NMI 不可屏蔽中断主要用于处理系统的意外或 故障。例如:
注意1:对于可屏蔽中断,接口电路必须在收到第一个INTA* 应答信号后,立即向CPU传送相应的中断向量号 注意2:只有可屏蔽中断需要进入响应周期,其它类型的中 断(指令软中断、NMI等)不进入中断响应周期,也不需要 外设传送中断向量号
8.2.3 8086的中断向量表(1)
3FCH
向量号255的CS值 向量号255的IP值 …… 向量号2的CS值 向量号2的IP值 向量号1的CS值 向量号1的IP值 向量号0的CS值
PUSHF IF、TF=0 CS、IP入栈 中断服务程序
TF=1
N 下条指令
非屏蔽中断 N Y 可屏蔽中断 单步中断
指令中断 溢出中断 Y
Y
IF=1
Y 中断响应周期 读中断向量号
CS、IP出栈 POPF
低
中断返回
① IRR锁存失效,不接收请求,第二个INTA 来时恢复; ② ISR相应位置1; ③ IRR相应位清0
8.2.2 可屏蔽中的的中断周期(2) 2.第二个总线周期 外设传送中断向量号,CPU在T4的下降沿采样数据总 线,读入外设传送来的中断向量号
第5章8086的中断系统
在第二个INTA信号有效,8259A送中断类型码 (初始化时写入8259A)到数据总线,由CPU启 动中断过程,同时撤消中断请求信号.
二、不可屏蔽中断NMI
发生“灾难性”事件(如电源掉电、存储器读 写出错、总线奇偶出错或协处理器中断请求 等),NMI=1,无法禁止(不受IF影响), 优先级比INTR高,且是边沿触发(只要有效 宽度大于2T即可),中断类型号为2,CPU响 应NMI,不发INTA,不要求外设提供中断向 量,自动到08H单元取入口地址。
5.3.2 外部中断
一、可屏蔽中断INTR 处理过程: 1)接口发请求,若屏蔽位(可用命令写入)=0, 通常由可编程中断控制器8259A PIC驱动,INTR=1,
一直保持到收到响应信号或撤消请求为止. 若IF=0(关中断,可由CLI复位),CPU不响应,继
续处理下一条指令;
若IF=1(开中断,可由STI置位),CPU响应, 2)执行两个INTA总线周期,发两个INTA信号,时序
专用5个(内部中断):在某些特定情况下, 由CPU内硬件自动提供类型号0~4;
保留27个(软件中断):由内部软件的中断 指令产生,供系统开发用。
用户定义224个(外部中断):由外部设备 硬件启动。
可以利用保留的中断类型码扩充自己需要的 中断功能,只要在向量表中加入对应的中断 向量即可。
由系统提供或用户定义,CPU执行后,立即产生中 断,转向n规定的中断服务程序去,入口地址在初 始化时已预置在中断向量表中。
四、断点中断——类型3(单字节指令)
CPU执行INT 3 (简写INT)时,产生中断, 进行特殊处理,如显示寄存器、存储单元的内 容,以检查程序运行的结果是否正确。在调试 时把断点插入程序中的关键之处,命令如-G CS: nnnnH。
第七章8086中断系统与中断控制器
非屏蔽中断(类型2) ,由引脚NMI进入,不受IF的限 制,一个系统只能有一个非屏蔽中断,其优先级高于 可屏蔽中断 专用中断:类型0,类型1,类型3,类型4 指令引发的:INT n
(2)内部中断(软件)
(3)中断的优先权 中断优先权 高 低 软件中断 ( 除零,INT 指令,INTO指令 )
6、IMR:中断屏蔽寄存器(8位) 用于存放从CPU来的屏蔽字,每一位与IR0~IR7相对应, 中断请求是否被响应,决定于中断屏蔽寄存器中相应位 的值 =1,被屏蔽 =0,被允许 7、优先级判别电路(PR) 用于确定新进入的中断请求是否比正在处理的中断请求 的优先级高。 8、ISR:当前中断服务寄存器(8位) 用于存放所有正在被处理的中断请求,每一位与 IR0~IR7相对应,哪一位上的中断请求被响应,当前中断 服务寄存器中的哪一位被置1。
中断源 能够引发中断的事件都称为中断源。 可分为硬件中 断源和软件中断源两类: 硬件中断源(外部中断): (1)外设: 如键盘、显示器和打印机等; (2)时钟电路: 如定时器/计数器; (3)故障源: 如掉电保护、内存错误等; 软件中断源(内部中断): (1)CPU内部事件:除法错、溢出错、单步/断点 运行; (2)软中断指令:INT 21H
CPU在得到中断类型号就可以执行中断服务程序,具体做以 下几个工作: ①执行两个中断响应周期,中断类型号×4=中断向量地 址。 ②CPU自动保护状态标志寄存器的值。 ③清IF和TF。 ④CPU保护断点,即下一条指令的地址,包括CS和IP。 ⑤查中断向量表,开始执行中断服务程序。 ⑥中断服务程序中:保护现场,开中断,进行中断服务, 恢复现场,中断结束,中断返回。
专用硬件方式 采用专门的中断控制器(8259)来解决优先级问题, 这是一种软、硬件结合的方式。
第十讲 8086 8088 CPU 中断
9
2.2)中断判优
多个中断源产生中断,CPU首先为谁服务?
中断请求信号应保持到中断被处理为止; CPU响应中断后,中断请求信号应及时撤销。
• 在8086/8088系统中,外设的中断要经过8259A可编程 中断控制器(PIC)的排队判优后向CPU发出:
(I/O接口 n→ PIC → CPU 接口) 接口
1
8
2.1)中断源识别
计算机中的中断源有很多,CPU必须识别是 哪一个设备产生中断。识别中断源有两个方 法:
中断源
中断源分为:外部中断、内部中断
5
中断源
8086/8088的外部中断信号:INTR、NMI
• INTR——可屏蔽中断请求,高电平有效,受IF标 可屏蔽中断请求,高电平有效, 可屏蔽中断请求 标 志的控制。 志的控制。 • NMI——非屏蔽中断请求,上升沿有效,任何时 非屏蔽中断请求, 非屏蔽中断请求 上升沿有效, 都要响应此中断请求信号。 候CPU都要响应此中断请求信号。 都要响应此中断请求信号
27
例
中断向量表
物理地址 00000 H 00001 H 单元内容 类型 0 中断处理 程序 入口地址 类型 1 中断处理 程序 入口地址 ………… ………… ………… ………… 类型 FFH 中断处理 程序 入口地址 INT MOV 4AH AL,30 , 地址 0:124 : 0:125 : 0:126 : 0:127 : 0:128 : 0:129 : 0: : 12A 0: : 12B 0: : 12C 0: : 12D 0:12E : 0:12F : 单元内容 类型 49 H 中断 向量 06 H 18 H 00 H F0 H 类型 4B H 中断 向量 I P=1806H CS=F000H
8086处理器中断系统思维导图,脑图
中断系统概述基本概念处理过程中断请求中断判优中断相应中断处理中断返回16位微机中断系统中断类型外部中断内部中断中断向量表组成及定位在8086/8088 中断系统中,所有中断服务程序的入口地址(中断向量)集中放在内存的最低1K区域(即地址为00000H ~ 003FFH) ,构成一个中断向量表。
每个中断向量占4个内存单元,前两个单元存放中断向量的偏移地址,后两个单元存放中断向量的段地址,因此,中断向量表可存放256 个中断向量。
中断向量地址= 4×中断类型码中断步骤心读取中断类型码;计算中断向量地址;取中断向量,偏移地址放IP ,段地址放CS;转入中断服务程序;中断返回到INT 指令的下一条指令。
设置例子设中断服务程序入口地址标号为VINTSUB ,中断类型码为N。
设置中断量:PUSHDS;数据段地址压栈MOVAX,0;中断向量表段地址-DSMOVDS, AXMOVBX,N*4;中断向量地址-+BXMOVAX,OFFSET VINTSUB;中断向量填入中断向量表MOV[BX], AXMOVAX,SEG VINTSUBMOV[BX +2],AXPOPDS;恢复数据段地址在PC 机中,通常是使用DOS 功能调用INT 21H 来设置中断向量。
入口参数设置为:AH 中预置功能号25H;AL 中预置中断类型码N;DS:DX 中预置中断向量(段地址置入DS ,偏移地址置入DX) 。
利用DOS 功能调用设置中断向量的程序:PUSH DSMOV AX, SEG VINTSUBMOV DS,AXMOV DX, OFFSET VINTSUBMOV AH, 25HMOV AL, NINT 21HPOP DS相应过程32位微机中断系统(略)中断控制器8259A编程模型中断请求寄存器IRR中断服务寄存器ISR中断屏蔽寄存器IMR优先权电路PR初始化命令寄存器ICW1 ~ ICW4操作命令寄存器OCW1 ~ OCW3外部引脚工作方式中断嵌套方式普通嵌套方式特殊全嵌套方式中断屏蔽方式中断优先权循环方式中断查询方式中断触发方式编程初始化命令字(ICW)ICW1设置方法将中断屏蔽寄存器IMR 清O;分配IRQ7 的优先权为7 (即最低级);清除特殊屏蔽方式;若IC4 =0 ,则将寄存器ICW4清0 。
8086中断
非屏蔽中断NMI(用户不能 用软件屏蔽)
外中断,硬件中断(来 自CPU外部) 可屏蔽中断(INTR)
中断
内中断,软件中断(由 CPU内部INT指令引起)
INT
运算错误
debug
8259A中断控制器
非屏蔽中断
通过CPU的NMI引脚进入,NMI 被响应时,自动产生2号类型中 断。 -它不受中断允许标志的屏蔽,微 处理器无法禁止,将在当前指令 执行结束予以响应; -8086的非屏蔽中断的类型号是2; -非屏蔽中断主要用于处理系统的 意外或者故障。 例: ——电源调电前的数据保护 ——存储器读写错误的处理 (整个系统中只能有一个非屏蔽 中断)
谢谢
中断屏蔽
IF=0:可屏蔽中断不会被响 应。 -关中断、禁止中断、中断 屏蔽系统复位,使IF=0; -任何一个中断被响应,使 IF=0; -执行指令CLI(禁止中断发 生),使IF=0; IF=1:可屏蔽中断会被响应 。 -开中断、允许中断、中断 开放执行; -指令STI(禁止中断发生) ,使IF=1; 执行指令IRET恢复原IF状态 。
中断屏蔽方式
1.普通屏蔽方式 -将中断屏蔽寄存器 (IMR)中某一或几位 置1,即可将相应位的 中断请求屏蔽。例如 :将11110000写入IMR ,即可屏蔽IR7 –IR4 的中断请求,开放IR3 –IR0的中断。
中断屏蔽方式
2.特殊屏蔽方式: 通常情况下,当一个 终端被响应时,禁止 同级或较低级别的中 断请求。在特殊屏蔽 方式下,当一个中断 被响应时,仅屏蔽同 级别的再次中断,较 低或者较高级别的中 断请求可被允许进入 。
非屏蔽 中断 NMI (用户 不能用 软件屏 蔽)
RAM奇偶效验错
I/O通道的扩展板出 现奇偶校验错
第3节2 8086中断系统
1.8086中断类型 1.8086中断类型 (1) 中 断 类 型 (2) 中断 中断 INTO (类型 类型 中断(类型 类型 断 (类型 类型 INT N
中断源 INTO NMI INTR 优先级 INT N ↑
中断
中断 系统 中断 中断 (类型 类型
0 号 向量 (除 法错 )
0 0000 H
16 位
通过中断向量号寻找中断向量的方法: 通过中断向量号寻找中断向量的方法 1.计算中断向量在向量表中的地址 计算中断向量在向量表中的地址: 计算中断向量在向量表中的地址 若中断类型码为N,则对应的中断处理程 若中断类型码为 则对应的中断处理程 序的入口地址存放在向量表0000:4*N开 序的入口地址存放在向量表 开 始的4个单元中 始的 个单元中 2.取中断处理程序的入口地址 取中断处理程序的入口地址: 取中断处理程序的入口地址 把0000:4*N开始的两个字节的内容 开始的两个字节的内容 寄存器, 送IP寄存器,作为偏移地址 寄存器 作为偏移地址. 把0000:4*N+2开始的两个字节的内 开始的两个字节的内 容送CS寄存器 作为段基址. 寄存器, 容送 寄存器,作为段基址
0号中断 号中断
1号中断 号中断
4×4=16=10H(向量表中的位置 段 × = = 向量表中的位置)0段 向量表中的位置
0073H 0072H 0071H 0070H . . . . . 0013H 0012H 0011H 0010H 30H 00H 10H 56H 中断服务子程入口地址 3号 向量
系统保 留 中断向 量 (27 个) 0 007C H
∶ 5 号向 量
0 0014 H 0 0012 H 0 000C H
第7章8086中断系统与中断控制器
No 最后一个总线周期的最后一个T状态?
No
Yes
有INTR?
Yes
中断开放? (FR中的IF=1?)
Yes
关中断CLI (置FR中IF=0) 发INTA信号
断点地址(IP. CS)入栈 FR 入栈
转入相应中断服务程序 保护现场
中断服务处理
恢复现场
图7.8 8086CPU 响应 开中断STI (置FR中IF=1)
利用专用的可编程中断控制器管理中断优先 级,又称专用芯片中断管理方式。典型的可编程中 断控制器是8259A。
7.2.1 中断类型 8086有256种中断,分为两大类:
外部中断(硬件中断) 内部中断(软件中断)
图7.6 8086中断类型
1. 外部中断 (硬件中断)
(1)非屏蔽中断 NMI(类型号2) 有效,不受FR 中IF 的影响,常用于
处理系统的重大故障。
(2)可屏蔽的中断INTR 高电平有效,CPU 是否响应,取决于 FR 中 IF 的状态。常用于各种外设的中断。
2. 内部中断(软件中断)
通常由三种情况引起:
(1)INT n 指令中断 (n 为中断类型号) (2)处理 CPU 某些错误的中断
① 除法错中断 (中断类型号0) ② 溢出中断 (INTO)(中断类型号4)
(3)实现故障处理。
引起中断的原因,产生中断请求的来源。
通常有以下几种:
① 一般的I/O 设备,如键盘、打印机等。 ② 实时时钟。 ③ 硬件故障。 ④ 中断指令或软件故障,如程序错、运算
错、调试程序而设置的中断(例如设置 断点,单步运行等)。
(1)实现断点地址的保护与恢复。
(2)实现现场信息的保护。
中断向量 (中断服 务程序入口地址) 在表中 的地址 = 中断类型号 ×4
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中断响应总线周期
中断响应过程的总线操作
• 第1个总线周期,通知外设,CPU准备响 应中断; • 第2个总线周期,外设发送中断类型码; • 总线写周期,标志寄存器入栈; • 总线写周期,CS内容入栈; • 总线写周期,IP内容入栈; • 总线读周期,偏移量送IP; • 总线读周期,段地址送CS;
5. 中断处理子程序
① ② ③ ④ ⑤ 进一步保护中断现场 开放中断 中断处理的具体内容 弹出堆栈指令(恢复保护的现场) 中断返回指令(自动返回F、CS、IP)
6. 软件中断
① 用一条指进入中断处理子程序,并 且,中断类型码由指令提供。 ② 不执行中断响应总线周期,也不从数 据总线读取中断类型码。 ③ 不受中断允许标志IF的影响 ④ 执行过程中可响应外部硬件中断 ⑤ 软件中断没有随机性
2. 中断向量和中断向量表
例:
• 中断类型号20H, 其中断程序入口地址为 2000H:1000H, 问:中断向量是什么?应存 放在什么位置,内容是什么?
3. 硬件中断
1. NMI:
a. 优先级别:级别较高;
b. 用于十分紧急的情况处理,如系统掉电 i. 将当前现场保存在非易失性存储器中; ii. 启动热备份设备; iii. 启动一定的线路接通一个可充电的电源 系统,以维持系统正常工作。
– 上升沿,维持两个时钟周期的高电平
• NMI的响应过程
几点说明:
1. 非屏蔽中断和可屏蔽中断有两点差别; 2. TF是单步中断标志 ; 3. 在中断响应后,又遇NMI; 4. 结束时,返回断点; 5. 不能立即响应中断的情况:
a. 遇到LOCK命令; b. 执行往段寄存器中传送数据的指令;
6. 等待或串操作时,允许过程中进入中断
4. 硬件中断的响应和时序
• 可屏蔽中断的响应过程 :
– – – – – 从数据总线上读取中断类型码,存入暂存器 将标志寄存器的值推入堆栈 把标志寄存器的IF和TF清零 将断点保护到堆栈中。 寻找中断向量,转入中断处理程序
• INTR信号:
– 电平触发信号 – 高电平要维持到CPU相应中断才结束
• NMI信号:
2.3.3 中断操作和中断系统
1. 8086的中断分类
硬件中断(NMI和INTR), 软件中断
2. 中断向量和中断向量表
• 中断类型号:8086中断系统中的每一个 中断都有一个0-255号的中断类型号; • 中断向量:所谓中断向量就是中断服务 程序的入口地址(段地址、偏移量地址); • 中断向量表:为便于进入中断服务程序, 将各个中断向量组成一个表放在固定位 置上(0000H-003FFH),由此表得到相 应中断的中断向量,将此向量传送给指 令指针,进入相应的中断服务程序。