第7章 中断系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IP中, 程序就被转入并开始执行中断处理程序。
(IP)←(4×N) (CS)←(4×N+2) (8) 中断处理子程序包括保护现场、中断服务、(开中断)、 恢复现场及返回等部分。
寄 存 器
即清除IF及TF(IF←0, TF←0),以便禁止其它可屏 蔽中断或单步中断发生为了 实现中断的嵌套。
图7-4 中断处理子程序
… …
系统保留中断
类型17~31
080H
…
用户自定义中断 类型32~255
3FFH
图示给出了中断类型码与中断向量所在位置之间的对 应关系。共有256个中断(00H~0FFH),其中: 类型00H~04H:专用中断; 类型05H~3FH:系统保留中断; 类型40H~0FFH:用户定义的中断。
BIOS: 基本输入输出系统 中断向量和中断向量表: 00H~04H----系统专用 10H~1FH----BIOS用( INT 21H 即为MS-DOS 的系统调用) 40H~FFH----用户用 08H~0FH----硬件中断 20H~3FH----DOS用
软件中断是应用程序提出的中断,每一个软件中断 都对应一个标准的功能,如:在屏幕上显示一个字符串, 或者从键盘接受一个字符,等等。 本章所介绍的中断,如果没有特别说明,不包括软 件中断。
7.3 异常
p313
① 异常的定义:
异常是在指令执行期间检测到的不正常的或非法的
状态,使指令不能成功执行。 异常是与特定指令的执行相联系的。例如,当微处 理器执行除法指令时,若商太大,使Leabharlann Baidu的寄存器容纳不 下,或是试图以零作除数,则称产生异常0。异常的发生 源于微处理器内部,且总是与微处理器操作同步。
2. 矢量地址
矢量地址 = (中断矢量类型号*4)
0000:007EH 0000:007FH 0000:0080H 0000:0081H 0000:0082H 0000:0083H 0000:0084H
… 12H 45H 10H 20H 30H 40H 52H
… 【例】某段内存空间的内容如右图所示。若已知中断的类型号 为20H, 求中断服务子程序的入口地址。 解:中断向量的存放位置为20H×4=80H,则在中断矢量地址 0000:0080H~0000:0083H中就应顺序放入10H、20H、30H、 40H(IP=2010H CS=4030H,即中断服务子程序的入口地址为 4030:2010 )。 当系统响应类型为20H号中断时,会自动查找中断向量, 找出对应的中断向量装入CS、IP,即转入该中断服务子程序。
7.5.2 中断向量表(P322)
中断向量:把各个中断服务子程序的入口地址都称为一个 中断向量; 中断向量(矢量)表:将中断向量按一定的规律排列成一 个表构成中断向量表,当中断源发出中断请求时,即可查找该 表,找出其中断向量,就可转入相应的中断服务子程序。 向量表地址:中断向量在中断向量表中的位置。 实地址方式下,微处理器采用中断矢量表(Interrupt Vector Table, IVT)的方法来存储转入中断处理程序的入口地址。 中断矢量表起始于物理内存地址0,长度为1 KB,并依中 断矢量号为序连续存放256个中断的中断处理程序首地址。
7.4 中断及异常的优先级 (p321)
当计算机系统中有多个中断源时,中断管理系统将规定一
套机制,用以解决多个中断源得到CPU服务的先后次序。 当80X86 CPU完成当前指令的执行后,
将先按照以下的顺序检查是否有中断(包括异常)请求:①
除法出错;② 中断指令INT n;③ 溢出中断;④ 非屏蔽中断 NMI;⑤ 可屏蔽中断INTR;⑥ 单步中断。 然后把优先级最高的中断或异常通知给系统,将优先级较 低的异常废弃,而将优先级较低的中断挂起;当把较高优先级
1. 中断矢量表: p322
8086中断系统中的中断向量表是位于0段的0~3FFH 的存贮区内,每个中断向量占四个单元,其中前两个单元存 放中断处理子程序的入口地址的偏移量(IP),低位在前,高 位在后;后两个单元存放中断处理子程序入口地址的段地址 (CS),也是低位在前,高位在后,整个中断向量的排列是按 中断类型号进行的。
的中断处理完后,再按优先级次序响应和处理挂起的中断。
7.5 8086中断系统
7.5.1 中断分类及中断类型码
中断源 引起中断的原因或发出中断请求的设备称为中断源。
1. 中断分类 p314 中断源可以分为两大类,即外部(硬件)中断和内部(软件)中断。 (1)硬件中断:即通过外部的硬件产生的中断,如打印机、键 盘等。硬件中断又可分为:可屏蔽中断 和 非屏蔽中断。
可 屏 蔽 中 断 请 求
软件中断
硬件中断
小结: 中断分类及中断类型码
8086/8088系统最多可处理256级不同类型的中断。
可屏蔽中断(INTR) 外部中断(硬件中断) 非屏蔽中断(NMI ,中断类型码2) 中断分类 单步中断(中断类型码1) 内部中断(软件中断) 断点中断(中断类型码3) 溢出中断(中断类型码4) Int n 中断
① 可屏蔽中断: 由INTR引脚引入,它受中断允许标志IF 的影响和控制,即当 IF=1时,可屏蔽中断才能进入,反之 则不允许进入,可屏蔽中断可有多个,一般是通过优先级排 队,从多个中断源中选出一个进行处理。
★ 当IF被软件采用STI指令置1时,表明允许可屏蔽中断, CPU响应可屏蔽中断INTR; ★当IF被软件采用CLI指令置0时,表明禁止可屏蔽中断。 IF位可禁止可屏蔽中断的这一特性可用来将程序代码的 某一特定区域(常称为程序的临界区)设置成禁止中断,以保证 该区域内程序段的可靠执行。 ② 非屏蔽中断:经由NMI信号线(边沿触发)请求的中断称为 非屏蔽中断。 由NMI引脚引入,它不受中断允许标志的影响,每个系 统中仅允许有一个,都是用来处理紧急情况的,如掉电处理。 这种中断一旦发生,系统会立即响应。
(2)软件中断:即根据某条指令或者对标志寄存器中某个标志 的设置而产生,它与硬件电路无关,常见的如除数为0,或 用INT n指令产生。
INT n指令 非屏蔽中断请求
NMI 中 断 逻 辑 INTR 中 断 控 制 系 统
( 8259A)
INT 3 INTO 指令 指令
单步 中断
除数为0 中断
。 。 。
为什么要使用中断? 为了解决这个矛盾,提出了中断传送方式,即当CPU 进行主程序操作时,外设的数据已存入输入端口的数据寄 存器;或端口的数据输出寄存器已空,由外设通过接口电 路向CPU发出中断请求信号,CPU在满足一定的条件下, 暂停执行当前正在执行的主程序,转入执行相应能够进行 输入/输出操作的子程序,待输入/输出操作执行完毕之后 CPU即返回继续执行原来被中断的主程序。 这样CPU就避免了把大量时间耗费在等待、查询状态 信号的操作上,使其工作效率得以大大地提高。
7.1 概述
中断和异常是处理器处理突发事件时所采取的两种不同 的处理方法,具体来说,中断指的是处理器暂停当前的程序, 转而去处理中断事件;而异常虽然也会对异常事件作出反应, 但不一定会暂停当前的程序。 在8086/8088处理器时代,中断主要包括外部中断 和 内 部中断两种。 在386/486等32位处理器时代,内部中断的数量和功能被 扩充,习惯上,称内部中断为异常,而中断则主要指外部中 断。
7.5.3 外部可屏蔽中断的响应和处理过程(p323)
终端或异常的响应顺序:① 除法出错;② 中断指令INT n; ③ 溢出中断;④ 非屏蔽中断NMI;⑤ 可屏蔽中断INTR;⑥ 单步中断。 外部可屏蔽中断的响应和处理过程示于图8.5中,简述如下: (1) CPU响应中断的条件:CPU要响应可屏蔽中断请求, 必须满足的条件:中断允许标志置1( IF=1),没有异常,没有 非屏蔽中断(NMI=0),没有总线请求(HOLD=0),无内部中断 (对8086则为无软件中断)。 (2) 外部设备发中断请求: 当某一外部设备通过其接口电 路向中断控制器8259A发出中断请求信号时,经8259A处理后, 得到相应的中断矢量号,并同时向CPU申请中断(INT=1)。
7.2
中断的定义: p312
中断实质上是指一种处理过程。 当计算机在执行 正常程序的过程中,如果出现某些异常事件或某种外部 请求时,处理器就暂停执行当前的程序,而转去执行对 异常事件或某种外部请求的处理操作;当处理完毕后, CPU再返回到被暂停执行的程序,继续执行,这个过程 被称为程序中断,简称中断。 外部中断是由外部设备通过CPU的中断请求线(如 INTR)向CPU提出的。能够向CPU发出中断请求的设备 或事件称为中断源。
((SP)+1:(SP))←(PSW)
(SP)←(SP)-2 ((SP+l:(SP))←(CS) (SP)←(SP)-2 ((SP)+1:(SP))←(IP)
(6) 清除IF及TF(IF←0,TF←0),以便禁止其它可屏蔽中 断或单步中断发生。 (7) 求中断程序的入口地址 :根据8259A向CPU送的中断 矢量号n求得矢量地址,再查中断矢量表,得相应中断处理程 序首地址(段内偏移地址和段地址),并将 位首地址置入CS及
连续2个
IF←0, TF ←0,禁止发生可屏蔽中断和单步中断 根据中断类型码求中断的入口地址CS:IP,转入 相应的中断子程序
堆栈
IRET
开中断为 了实现中 断的嵌套
外部可屏蔽中断的响应和处理过程
(3) CPU是否立即发中断响应信号 INTA ? 如果现行指令不是HLT或WAIT指令,则CPU执行完当前 指令后便向8259A发出中断响应信号( 响应该可屏蔽中断请求。 若现行指令为HLT,则中断请求信号INTR的产生使处理 = 0),表明CPU INTA
②异常分类: 产生异常后,系统根据引起异常的程序是否可被恢复这一 原则,进一步又把异常分为故障(Fault)、陷阱(Trap)和中止 (Abort)三类。
故障是引起该故障的程序可被恢复执行的异常,它也是 在引起故障的指令执行之前就报告给系统的一种异常。 陷阱是在指令执行期间被检测到的,并在引起异常的指 令执行之后向系统报告的一种异常。 中止是微处理器面临严重错误时产生的异常。例如,系 统出现硬件错误或系统表中出现非法值或不一致的值时,便产 生中止异常,引起中止的指令无法确定。产生中止时,正执行 的程序不能被恢复。因而,产生中止异常后,系统需重建各种 系统表格,或需重新启动操作系统。
第七章
中断和异常
7.1 概述 7.2 中断 7.3 异常 7.4 中断及异常的优先级 7.5 8086中断系统 7.6 中断优先级管理器8259A-PIC 习题与思考题
为什么要使用中断?
从查询式的传输过程可以看出,它的优点是硬件 开销小,使用起来比较简单。但在此方式下,CPU要不 断地查询外设的状态,当外设未准备好时,CPU就只能 循环等待,不能执行其它程序,这样就浪费了CPU的大 量时间,降低了主机的利用率。
器退出暂停状态,响应中断,进入中断处理程序。
若现行指令为WAIT指令,且 TEST 引脚加入低电平信号, 则中断请求信号INTR产生后,便使处理器脱离等待状态,响 应中断,进入中断处理程序。
HLT: 暂停指令
(4) 8259A连续两次接收(2个总线周期) INTA = 0的中断 响应信号后,便通过总线将中断矢量号送CPU。 (5) 保护断点。将标志寄存器内容、当前CS内容及当前IP 内容压入堆栈: (SP)←(SP)-2
中断向量和中断向量
000H
004H 008H IP偏移地址 CS段基地址 IP偏移地址 CS段基地址 IP偏移地址 CS段基地址
中断类型码0(除法错)
中断类型码1(单步中断) 中断类型码2(NMI中断)
00CH
014H
中断类型码3(断点中断)
中断类型码4(溢出中断)
· · · · · ·
中断类型码5(保留)
① 保护现场(由一系列的PUSH指令完成)。目的是为了保护那 些与主程序中有冲突的寄存器,(如AX,BX,CX等),如果中 断服务子程序中所使用的寄存器与主程序中所使用的寄存器等 没有冲突的话,这一步骤可以省略。 ② 开中断(由STI指令实现)。目的是为了能实现中断的嵌套。 ③ 中断服务 ④ 恢复现场是与保护现场对应的,但要注意数据恢复的次序,以 免混乱。 ⑤ 返回(使用中断返回指令IRET)。 中断处理程序执行完毕, 最后执行一条中断返回指令IRET,将原压入堆栈的标志寄存 器内容及断点地址重又弹出至原处。