第7章 中断方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章 中断技术
基本内容: 中断常用的概念如:中断、断点、断点保护、中断返回、中断服务程序、保
护现场;中断的用途;中断源及分类;中断的一般过程;中断源识别;中断优先权的确定。
基本要求:理解中断的概念、分类;掌握中断的处理过程,会编写中断服务程序;掌握
中断的优先权排队方法;了解中断嵌套的概念。
重点内容: 中断的一般过程;中断源识别;现场保护;中断向量表与中断类型号关系。 难点内容: 中断优先权的确定、现场保护。
第一节 中断的基础知识 一、 中断的概念
1. 什么是中断
所谓中断,是指处理器在执行正常程序过程中,当出现某些异常情况或某个外部设备请求时,处理器暂时中止正在执行的程序,转而去执行其特定的服务程序,并在执行完服务程序后返回原来被中止的程序处继续执行的过程。
中断最初用于解决高速CPU 与低速外设之间的速度矛盾。目前己经广泛地应用在分时操作、实时处理、人机交互、多机系统等方面。
2. 什么是断点
所谓断点,就是指响应中断时,主程序中当前指令下面的一条指令地址,包括代码段寄存器CS 和指令指针寄存器IP 的值。只有保存了断点,才能在中断处理子程序完成以后,正确返回到主程序继续执行。
3. 中断返回 (举例说明) 使CPU 返回到中断前的程序,并从断点处继续执行。
4. 中断服务程序
一般地,每一个中断源都有其相应的服务程序,即中断程序。当CPU 识别中断源后,就会取得其中断程序的入口地址,并转入该中断程序,进行相应的中断服务。中断服务是整个中断处理的核心。
5. 中断现场和中断保护
状态寄存器状态(硬件保存)、内部寄存器内容(程序保存)
原程序
中断请求
中断处理程序
当CPU 响应某个中断时,就会转到相应中断源的服务程序上。为了使CPU 在完成中断服务后能返回原程序继续执行,需要将原程序被中断处的相关信息保存到堆栈中。
对8086/8088 CPU ,断点处的IP 、CS 和标志寄存器内容由硬件进行自动保护,其他信息的保护则由中断服务程序来完成。
二、 中断源及分类
引起中断的外部设备或内部原因,称为中断源。 种类:
(1)一般的输入/输出设备; (2)实时时钟; (3)故障源;
(4)软件中断。
不可屏蔽中断:不能用软件来控制是否允许中断的一种外部中断。
常见NMI 中断有:(1)电源掉电; (2)存储器检验出错; (3)总线奇偶错
图1 微机系统的中断处理过程
等。
可屏蔽中断:可用软件控制是否允许中断的外部中断。即STI使IF=1,允许中断;CLI使IF=0,禁止中断。
常见INTR中断有:所有外部设备中断如键盘、鼠标、打印机、显示器、声卡、CD-ROM 等。
软件中断的特点:
①用一条指令进入中断处理子程序,并且,中断类型码由指令提供。
②不执行中断响应总线周期,也不从数据总线读取中断类型码。
③不受中断允许标志IF的影响
④执行过程中可响应外部硬件中断
⑤软件中断没有随机性
三、中断的一般过程
有些书上把中断处理细分为七个过程:1) 中断请求; 2) 中断响应; 3) 断点保护;
4) 中断源识别;5) 中断服务;6) 断点恢复;7) 中断返回。
此处简化为5个过程:中断请求、中断判优、中断响应、中断服务、中断返回。
1、中断请求
含义:中断源发出中断请求信号。
中断源→CPU,由外设、指令执行引起(包括中断指令或执行结果引起)
对外部中断源,这个信号加至CPU的中断请求输入引脚,形成对CPU的中断请求;
对内部中断源,则通过CPU内部特定事件的发生或特定指令的执行作为对CPU
的中断请求。
•外部中断源主要有:
(1) I/O设备,如键盘、显示器、打印机等。
(2) 数据通道,如软、硬磁盘,磁带等。
(3) 实时钟,如外部所需的定时电路等。
(4) 故障源,如掉电、存储器奇偶校错等。
•内部中断源主要包括:
(1) CPU指令产生异常,如被0除、溢出、单步等。
(2) 程序执行INT软件中断指令,如INT 19H等。
2、中断判优
由于中断是随机的,可能同时出现多个中断源同时请求中断,这时必须对申请中断的中断源进行优先级判别,这一阶段称为中断判优。
IBM-PC规定的中断优先级的次序是:
内部异常中断(除单步外)> INT n > NMI > INTR > 单步中断
3、中断响应
中断响应过程:把从接到中断请求到中断处理之前,即从请求有效到转中断服务程序入口地址这一段时间。
对不可屏蔽中断NMI响应,CPU执行完当前工作指令后,做好保护工作后进入。
对可屏蔽中断响应,
对INTR响应,要满足三个条件:
(1)无总线请求;
(2)CPU允许中断(IF=1);
(3)CPU执行完当前指令。
可屏蔽中断的响应过程:
(1) 处理器接到中断申请,处理完当前指令即进入响应周期。
(2) 第二阶段即中断响应周期,在其间CPU向外部中断控制器发送两个响应脉冲信号INTA。
第一个响应脉冲通知中断控制器,已经响应外部中断请求,让中断控制器提供中断类型号。第二个响应脉冲,CPU取走中断类型号。
前两个可理解为读取中断类型码
(3) 将标志寄存器中的内容压入堆栈保护,然后清IF和TF标志,以禁止INTR引脚以及陷阱和单步中断。
(4) 将断点地址压入堆栈(CS:IP或CS:EIP)。
断点地址:指中断时CPU待执行的下一条指令对应的逻辑地址。
顺序:先压入断点地址的CS,后压入偏移地址EIP(或IP)。
(5)通过中断类型号n与中断服务程序入口地址的关系找出该类型对应的段基地址和偏移地址,从而转入中断服务程序入口地址。完成中断响应任务。
对以上各中断响应时先完成三任务:
①标志寄存器PSW入栈
②关闭中断,令IF和TF=0
③CS、IP入栈(断点保护)
④取得中断入口地址,进入中断程序
(SP)←(SP)-2
((SP)+1,(SP))←(PSW)
(SP)←(SP)-2
((SP)+1,(SP))←(CS)
(SP)←(SP)-2
((SP)+1,(SP))←(IP)
(IP)←(TYPE*4)
(CS)←(TYPE*4+2)
3、中断服务
一般地,每一个中断源都有其相应的服务程序,即中断程序。当CPU识别中断源后,就会取得其中断程序的入口地址,并转入该中断程序,进行相应的中断服务。中断服务是整个中断处理的核心。
(1)保护现场。
保护现场实质:将重要信息压入堆栈。
PSW、CS、IP已在进入前完成保护;对于其他寄存器等的保护,与子程序一样可适当入栈保护。