第7章 中断系统和中断控制器8259A
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.2.2.1 内部中断
内部中断是通过软件指令或软件陷阱而调用的非屏蔽中 断(指不受IF状态影响),这是由程序运行的状态和指 令代码执行后自动启动而不是由外界中断请求来调用的。 内部中断按其性质又可分为软件陷阱和软件中断: 软件陷阱——在某些指令执行期间FR的标志位满足设定 的条件或CPU的状态符合某种情况从而触发CPU内部逻辑去启 动所需要的中断服务子程序,如除法出错中断和单步中断。 软件中断——通过指令来调用中断服务子程序。
(IP) ← ((SP+1),(SP)) , (SP)←(SP)+2
(CS)← ((SP+1),(SP)) , (SP)←(SP)+2 (FR)← ((SP+1),(SP)) , (SP)←(SP)+2
指令执行后 (SP)=(SP)+6
7.2.2 8086/8088的中断分类
8086/8088的中断系统采用向量中断方法,能够处理256 个中断,用中断向量号0~255区别。 中断系统有如下分类: 可屏蔽中断: 从CPU的INTR 引脚输入,受 中断允许标志 IF状态影响; 非屏蔽中断: 从CPU的NMI引 脚输入。
7.1.2
中断处理过程
中断请求→中断排队 →中断响应→中断服务→中断返回
(1)中断请求 ——中断源向CPU发出的请求中断服务的信号。 必须满足条件: ●中断源已准备好; ●系统允许该中断源发出中断信号。 设置中断屏蔽触发器加以控制 中断屏蔽触发器=1,允许向CPU申请中断。 中断屏蔽触发器=0,禁止向CPU申请中断。 中断请求信号是随机发生的,因此,CPU一般隔一定时 间检测一次中断请求信号确定是否有中断请求。
3.断点中断——中断类型码n= 3
断点中断也是提供给用户的一种程序调试手段。在相应的程序语句后 设置断点,就可以使程序运行一段后进入断点中断,检查程序是否达到要 求。实现分段落调试程序。
4. 溢出中断——中断类型码 n=4
溢出中断是通过INTO中断指令实现的,该指令跟在有符号数的算 术运算指令以后在执行溢出中断指令INTO时,若溢出标志OF为1,则产 生一个向量号为4的内部中断。并转入溢出中断处理。 例:MOV BL,126 MOV AL,5 ADD AL,BL →执行到此指令后,将OF置1 INTO →执行到此产生中断
7.2 8086/8088的中断系统
8086/8088具有功能很强的中断系统,能够处理256个中断源。
7.2.1
8086/8088的中断指令
单字节,n固定为3
SS:SP-2 SS:SP-2 SS:SP-2 SS:SP
--ZZ ZZ YY YY X X X X ?-…
IPL IPH CSL CSH RFL RFH
地址 00114H 00115H 00116H 00117H 00118H 存储单元内容 20H 10H 00H 34H
即该中断服务程序的入口地址为35020H。
2、中断向量表的设置
中断向量表的设置——将中断源的中断向量存入中断向 量表对应的位置。 方法一 ——用系统功能调用设置。
实现:(1)功能号:25H (2)调用参数: DS ← 中断向量的段基址 DX ← 中断向量的偏移地址 AL ← 中断类型码N 例:某中断源的中断类型码为70H,其中断服务程序入口地址为IRQ0。 该中断源的中断向量表设置程序: PUSH DS MOV AX, SEG IRQ0 MOV DS, AX ;段基址送入DS MOV DX, OFFSET IRQ0 ;偏移地址送入DX MOV AX, 2570H ;类型码送AL,功能号送AH INT 21H ;系统功能调用 POP DS
中断请求不受中断允许标志IF状态的影响,在当前指令执 行完后,CPU就响应。 非屏蔽中断用于较重要、紧急的中断请求。
2、可屏蔽中断
——中断类型码 n 由申请中断的中断源提供。 可屏蔽中断请求由INTR引脚送入。所谓可屏蔽,指该中 断请求须由中断允许标志IF的状态决定其是否被CPU响应。 IF的设置可由指令实现。 STI CLI ;IF=1,允许中断 ;IF=0,禁止中断
第7章 中断系统和中断控制器8259A
主要内容
1. 中断的基本概念 2. 8086系统的中断系统 3. 中断控制器8259A及应用
学习要点:
1.掌握8086内部中断的特点;
2.掌握中断的基本概念,掌握对外部中断响应的区别; 3.深刻理解中断类型码、中断矢量和中断向量表的概念,以及如何对 中断服务程序寻址; 4.了解8259A的编程结构,理解8259A工作方式、掌握8259有关命令和 初始化编程及其应用方法。
方法二、用传送指令设置
例:某中断源的中断类型码为72H,其中断服务程序入口地址为IRQ2。 该中断源的中断向量表设置程序:
72H×4=01C8H CLI PUSH DS MOV AX, 0 MOV DS, AX ;中断向量表段基址为0 MOV [01C8H], OFFSET IRQ0 ;存入偏移地址 MOV [01CAH], SEG IRQ0 ;存入段基址 POP DS
(3)中断系统 ——实现中断功能的控制逻辑与管理软件称为中断系统。 不同的微型计算机的中断系统虽然各不相同,但中断系统 的基本功能是相同的。 中断系统应具备的功能: ◆中断源的识别、响应及返回——完成一次中断过程;
◆中断优先权排队——给中断源按轻重缓急排队;
◆中断嵌套—— 优先权高的中断源能中断优先权低的中断处 理。
外部中断是由于外部提出中断请求引起的程序中断,也 称为硬中断。 利用外部中断,微机系统可以实时响应外部设备的数据 传送请求,能够及时处理外部意外或紧急事件。 外部中断的原因是处理器外部随机产生的,所以是真正 的中断(Interrupt)。 硬中断又分可屏蔽中断与非屏蔽中断。
1.
非屏蔽中断——中断类型码n=2 非屏蔽中断请求由NMI引脚送入。所谓非屏蔽,指该
1. 除法出错中断——中断类型码n= 0
在执行除法指令时,若除数为0或商超过了寄存器所能表达的范围,则产 生一个类型号为0的内部中断,称为除法错中断。
注意点:除法错误中断是由内部电路自动生成的,没有对应的中断指令。
2. 单步中断——中断类型码 n=1
为了用户调试上机的方便,当TF=1时,则在每执行一条指令后,可 以产生一个类型号为1的中断。 在中断处理程序的控制下,可以给出有关寄存器的内容或状态标志 位的状态,以便了解程序的执行情况。 例如:DEBUG.EXE调试程序的单步命令T 就利用单步中断实现对 程序的单步调试
5.
软件中断——中断类型码 n由用户定义 以软中断指令INT n方式实现中断服务程序,5≤n≤255 。
其中5 ~3FH为系统备用中断,一般不允许用户改作其它用 途,如系统功能调用INT 21H。
40H~FFH为用户可用的中断,用户可自行设计一些中断服 务程序,这与调用子程序相似。
7.2.2.2 外部中断
7.1 中断的基本概念
7.1.1 中断及中断源
(1)中断——由于外设的请求或某事件的发生使CPU暂停
执行现行程序,转去执行处理相应请求或事件的中断服务程 序,处理完毕再返回运行原程序,这样的过程为中断。 (2)中断源——能够引起中断的事件。 中断源: ◆一般的I/O设备。如键盘、打印机等; ◆数据通道中断源。如磁盘、磁带机等; ◆实时时钟 ; ◆故障引起的中断 。如电源掉电; ◆中断指令或软件故障。如系统功能调用、除数为0等。
JNZ BSEV;转B服务程序 ……
2. 硬件排队 1)链式排队电路 如:
INTR1
5V
2)优先权编码电路
INTR2
INTR3
IEI
IEO
IEI
IEO
IEI
IEO
作用: (1)能够送出当前有中断请求的中断源中优先权最高的中 断请求。 (2)当一个中断源的中断请求被CPU响应后,比它低优先 权的中断源被屏蔽。
图 7-1 中断服务程序的结构
7.1.3 中断优先权管理
——将中断源按轻重缓急排队,确定各中断优先权次序。 优先权管理是指判别和确定各中断源的中断优先权次序。
中断优先权判别方法有两种:来自百度文库软件排队和硬件排队
1. 软件排队 ——用软件查询哪个中断源有中断请求,先查询到的 先响应。即:查询次序确定各中断优先权次序,先查询的 优先权最高。
当IF=1,INTR有效时,CPU将送出中断响应信号 INTA 。 中断源接到该信号,将其中断类型码送给CPU。
7.2.3 中断向量表
1、中断向量表 中断向量即中断服务程序的入口地址(首地址) ,用32 位逻辑地址表示。中断向量表是一个存储区,该存储区存放所 有中断向量。 表内容:所有中断服务程序的入口地址,即256个中断向量。 表长度:一个中断向量4个字节,256个中断向量共256×4= 1024字节,即占用1K存储空间。 表位置:在0段内偏移地址为0000~03FFH的范围内,即实际 地址为00000~003FFH。 存放次序:按中断类型码从小到大依次存放。每个中断向量 占用的 4 个单元中,小地址的存放偏移地址,大地址的存放 段地址。
6)中断返回——中断返回指令使得CPU自动地将堆栈中 保存的F 和程序断点处的CS、IP值弹到F、CS、IP中,使CPU 返回主程序断点处继续执行主程序,同时中断返回指令使得 IF自动恢复响应中断前的开中断状态。
中断服务程序框图:
保护有关寄存器内容
开中断 中断处理 关中断
恢复有关寄存器内容
中断返回
1)接口电路
INTR
或 门 中断A 中断B 中断C
D0~D7 IOR A0~A15 译码
三态 缓冲器
锁 存 器
…
…
或 门
80H
2)查询程序
IN AL,80H TEST AL,80H JNZ ASEV;转A服务程序
3)特点:方法简单,硬件 电路省,但中断源多时, 查询速度慢,影响中断响 应速度。
TEST AL,40H
(2)中断排队及中断响应
——系统中有多个中断源,当两个以上中断源同时向 CPU发出中断请求信号,则CPU能先响应重要的、紧急的中断,
即优先权高的中断源。这就是中断排队的工作。
中断响应是指CPU在接到中断请求信号后,确定可以响
应时自动完成的操作:
①发中断响应信号 ,同时内部关中断(IF←0),以禁 止其它可屏蔽中断请求; ② 保护断点——程序断点处的CS、IP内容压栈,以便 中断处理完后能正确地返回主程序; ③ 保护现场—— 保护标志寄存器 F 的内容; ④ 中断识别并形成中断服务程序入口地址——使段地 址→CS ,偏移地址→IP,转入中断服务程序执行。
1. 中断指令
格式: INT n 或 INT; n=0~255,为中断类型码。
功能:SP←SP-2,SS:[SP]←RF IF←0,TF←0 SP←SP-2,SS:[SP]←CS, SP←SP-2,SS:[SP]←IP IP←0:[n*4] CS←0:[n*4+2]
0000:n*4 AA
IPL IPH CSL CSH
(3)中断服务及中断返回
在中断服务程序中,需做以下事情 1)保护现场 ——保护有关寄存器的内容;(如压入堆 栈保护) 2)开中断——(IF←1)为了实现中断的嵌套;
3)中断处理服务 ——对中断源作相应的处理。例如进 行数据传送等。这是服务程序的实质性环节。
4)关中断——为恢复现场做准备;
5)恢复现场;
每一个中断服务程序入口地址与表内的中断向量有一 一对应的关系 向量号为n的中断向量存放首地址=n×4
例:设某中断源的类型码为13H,该中断源的中断服务程序 的入口地址为FF00H:2200H,试画出中断矢量表。 解:n=13,4n=13H*4=4CH
则中断向量存放首地址(偏移量)为:004CH
例:某一中断源的中断类型码为45H,则该中断源的中断 向量在中断向量表的位置是:45H×4=00114H 若中断向量表部分单元内容如图示,则该中断源的中 断向量为:3400H:1020H。
BB
0000:n*4
CC
DD
中断指令完成关中断、保护 F 和断点CS:IP,形成 中断服务程序入口地址 DDCC:BBAA的功能。
2.
溢出中断
格式: INTO
单字节指令, (n=4)
指令功能:放在算术运算指令之后,若运算结果有溢出, 则OF=1,产生溢出中断,若运算结果无溢出,则OF=0,不 产生溢出中断。 3. 中断返回指令 格式:IRET 指令的操作: