当前位置:文档之家› 第7章 中断系统

第7章 中断系统


(2)软件中断:即根据某条指令或者对标志寄存器中某个标志 的设置而产生,它与硬件电路无关,常见的如除数为0,或 用INT n指令产生。
INT n指令 非屏蔽中断请求
NMI 中 断 逻 辑 INTR 中 断 控 制 系 统
( 8259A)
INT 3 INTO 指令 指令
单步 中断
除数为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.1 概述
中断和异常是处理器处理突发事件时所采取的两种不同 的处理方法,具体来说,中断指的是处理器暂停当前的程序, 转而去处理中断事件;而异常虽然也会对异常事件作出反应, 但不一定会暂停当前的程序。 在8086/8088处理器时代,中断主要包括外部中断 和 内 部中断两种。 在386/486等32位处理器时代,内部中断的数量和功能被 扩充,习惯上,称内部中断为异常,而中断则主要指外部中 断。
连续2个
IF←0, TF ←0,禁止发生可屏蔽中断和单步中断 根据中断类型码求中断的入口地址CS:IP,转入 相应的中断子程序
堆栈
IRET
开中断为 了实现中 断的嵌套
外部可屏蔽中断的响应和处理过程
(3) CPU是否立即发中断响应信号 INTA ? 如果现行指令不是HLT或WAIT指令,则CPU执行完当前 指令后便向8259A发出中断响应信号( 响应该可屏蔽中断请求。 若现行指令为HLT,则中断请求信号INTR的产生使处理 = 0),表明CPU INTA
7.4 中断及异常的优先级 (p321)
当计算机系统中有多个中断源时,中断管理系统将规定一
套机制,用以解决多个中断源得到CPU服务的先后次序。 当80X86 CPU完成当前指令的执行后,
将先按照以下的顺序检查是否有中断(包括异常)请求:①
除法出错;② 中断指令INT n;③ 溢出中断;④ 非屏蔽中断 NMI;⑤ 可屏蔽中断INTR;⑥ 单步中断。 然后把优先级最高的中断或异常通知给系统,将优先级较 低的异常废弃,而将优先级较低的中断挂起;当把较高优先级
器退出暂停状态,响应中断,进入中断处理程序。
若现行指令为WAIT指令,且 TEST 引脚加入低电平信号, 则中断请求信号INTR产生后,便使处理器脱离等待状态,响 应中断,进入中断处理程序。
HLT: 暂停指令
(4) 8259A连续两次接收(2个总线周期) INTA = 0的中断 响应信号后,便通过总线将中断矢量号送CPU。 (5) 保护断点。将标志寄存器内容、当前CS内容及当前IP 内容压入堆栈: (SP)←(SP)-2
为什么要使用中断? 为了解决这个矛盾,提出了中断传送方式,即当CPU 进行主程序操作时,外设的数据已存入输入端口的数据寄 存器;或端口的数据输出寄存器已空,由外设通过接口电 路向CPU发出中断请求信号,CPU在满足一定的条件下, 暂停执行当前正在执行的主程序,转入执行相应能够进行 输入/输出操作的子程序,待输入/输出操作执行完毕之后 CPU即返回继续执行原来被中断的主程序。 这样CPU就避免了把大量时间耗费在等待、查询状态 信号的操作上,使其工作效率得以大大地提高。
软件中断是应用程序提出的中断,每一个软件中断 都对应一个标准的功能,如:在屏幕上显示一个字符串, 或者从键盘接受一个字符,等等。 本章所介绍的中断,如果没有特别说明,不包括软 件中断。
7.3 异常
p313
① 异常的定义:
异常是在指令执行期间检测到的不正常的或非法的
状态,使指令不能成功执行。 异常是与特定指令的执行相联系的。例如,当微处 理器执行除法指令时,若商太大,使目的寄存器容纳不 下,或是试图以零作除数,则称产生异常0。异常的发生 源于微处理器内部,且总是与微处理器操作同步。
7.2
中断的定义: p312
中断实质上是指一种处理过程。 当计算机在执行 正常程序的过程中,如果出现某些异常事件或某种外部 请求时,处理器就暂停执行当前的程序,而转去执行对 异常事件或某种外部请求的处理操作;当处理完毕后, CPU再返回到被暂停执行的程序,继续执行,这个过程 被称为程序中断,简称中断。 外部中断是由外部设备通过CPU的中断请求线(如 INTR)向CPU提出的。能够向CPU发出中断请求的设备 或事件称为中断源。
① 保护现场(由一系列的PUSH指令完成)。目的是为了保护那 些与主程序中有冲突的寄存器,(如AX,BX,CX等),如果中 断服务子程序中所使用的寄存器与主程序中所使用的寄存器等 没有冲突的话,这一步骤可以省略。 ② 开中断(由STI指令实现)。目的是为了能实现中断的嵌套。 ③ 中断服务 ④ 恢复现场是与保护现场对应的,但要注意数据恢复的次序,以 免混乱。 ⑤ 返回(使用中断返回指令IRET)。 中断处理程序执行完毕, 最后执行一条中断返回指令IRET,将原压入堆栈的标志寄存 器内容及断点地址重又弹出至原处。
中断向量和中断向量
000H
004H 008H IP偏移地址 CS段基地址 IP偏移地址 CS段基地址 IP偏移地址 CS段基地址
中断类型码0(除法错)
中断类型码1(单步中断) 中断类型码2(NMI中断)
00CH
014H
中断类型码3(断点中断)
中断类型码4(溢出中断)
· · · · · ·
中断类型码5(保留)
… …
系统保留中断
类型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用
1. 中断矢量表: p322
8086中断系统中的中断向量表是位于0段的0~3FFH 的存贮区内,每个中断向量占四个单元,其中前两个单元存 放中断处理子程序的入口地址的偏移量(IP),低位在前,高 位在后;后两个单元存放中断处理子程序入口地址的段地址 (CS),也是低位在前,高位在后,整个中断向量的排列是按 中断类型号进行的。
第七章
中断和异常
7.1 概述 7.2 中断 7.3 异常 7.4 中断及异常的优先级 7.5 8086中断系统 7.6 中断优先级管理器8259A-PIC 习题与思考题
为什么要使用中断?
从查询较简单。但在此方式下,CPU要不 断地查询外设的状态,当外设未准备好时,CPU就只能 循环等待,不能执行其它程序,这样就浪费了CPU的大 量时间,降低了主机的利用率。
7.5.2 中断向量表(P322)
中断向量:把各个中断服务子程序的入口地址都称为一个 中断向量; 中断向量(矢量)表:将中断向量按一定的规律排列成一 个表构成中断向量表,当中断源发出中断请求时,即可查找该 表,找出其中断向量,就可转入相应的中断服务子程序。 向量表地址:中断向量在中断向量表中的位置。 实地址方式下,微处理器采用中断矢量表(Interrupt Vector Table, IVT)的方法来存储转入中断处理程序的入口地址。 中断矢量表起始于物理内存地址0,长度为1 KB,并依中 断矢量号为序连续存放256个中断的中断处理程序首地址。
IP中, 程序就被转入并开始执行中断处理程序。
(IP)←(4×N) (CS)←(4×N+2) (8) 中断处理子程序包括保护现场、中断服务、(开中断)、 恢复现场及返回等部分。
寄 存 器
即清除IF及TF(IF←0, TF←0),以便禁止其它可屏 蔽中断或单步中断发生为了 实现中断的嵌套。
图7-4 中断处理子程序
可 屏 蔽 中 断 请 求
软件中断
硬件中断
小结: 中断分类及中断类型码
8086/8088系统最多可处理256级不同类型的中断。
可屏蔽中断(INTR) 外部中断(硬件中断) 非屏蔽中断(NMI ,中断类型码2) 中断分类 单步中断(中断类型码1) 内部中断(软件中断) 断点中断(中断类型码3) 溢出中断(中断类型码4) Int n 中断
的中断处理完后,再按优先级次序响应和处理挂起的中断。
7.5 8086中断系统
7.5.1 中断分类及中断类型码
中断源 引起中断的原因或发出中断请求的设备称为中断源。
1. 中断分类 p314 中断源可以分为两大类,即外部(硬件)中断和内部(软件)中断。 (1)硬件中断:即通过外部的硬件产生的中断,如打印机、键 盘等。硬件中断又可分为:可屏蔽中断 和 非屏蔽中断。
②异常分类: 产生异常后,系统根据引起异常的程序是否可被恢复这一 原则,进一步又把异常分为故障(Fault)、陷阱(Trap)和中止 (Abort)三类。
故障是引起该故障的程序可被恢复执行的异常,它也是 在引起故障的指令执行之前就报告给系统的一种异常。 陷阱是在指令执行期间被检测到的,并在引起异常的指 令执行之后向系统报告的一种异常。 中止是微处理器面临严重错误时产生的异常。例如,系 统出现硬件错误或系统表中出现非法值或不一致的值时,便产 生中止异常,引起中止的指令无法确定。产生中止时,正执行 的程序不能被恢复。因而,产生中止异常后,系统需重建各种 系统表格,或需重新启动操作系统。
相关主题