微机原理第八章中断
2. 可以实现外设工作请求的实时处理。
3.可以完成对一些故障的自行处理。如电源跳变 以及运算溢出等。
二、中断源及其种类
中断源——引起中断的原因,或能发出中 断请求的来源。 种类: 1.一般的输入输出设备,如键盘、打印机 2.数据通道中断源,如磁盘 3.实时时钟,如定时时间到 4.故障源,如电源掉电时需要保护现场及 数据 5.人为设置,如调试程序用的单步和断点
8.3 中断优先权
当出现多个中断源同时提出中断请求时, CPU既要识别有哪些中断源提出请求,还要辨 别和比较它们的优先权,先响应优先权最高的 中断请求。如果CPU正在处理中断,也要能够 响应优先权更高级的中断请求,而屏蔽掉同级 或低级的中断请求。 中断优先权的确定有两种方法:软件的方 法和硬件优先权排队电路。
2. 非屏蔽中断 出现在NMI线上的中断请求,不受标志位I的 影响,在当前指令执行完以后,CPU就响应。 在NMI线上的请求信号是边沿触发的,它的出 现是异步的,由内部把它锁存。8086要求NMI上 的请求脉冲的有效宽度(高电平的持续时间)要大 于两个时钟周期。 通常非屏蔽中断用于电源故障。非屏蔽中断 的优先权高于屏蔽中断。 CPU采样到有非屏蔽中断请求时,自动给出 中断向量号2,而不经过上述的可屏蔽中断那样的 中断响应周期。
8.4.1 外部中断
8086有两条外部中断请求线: 非屏蔽中断NMI(Non Maskable Interrupt)和可屏蔽中断INTR。 1. 可屏蔽中断 出现在INTR线上的请求信号是电平触发的,它的出现是 异步的,在CPU内部是由CLK的上升沿来同步的。在INTR线 上的中断请求信号(即有效的Байду номын сангаас电平)必须保持到当前指令的结 束。
8.4 8086微处理器的中断方式
8086有两类中断:硬件中断和软件中断
硬中断是由来自CPU外部的事件产生,即由外部设备提出中 断请求而产生的。硬中断的产生具有随机性,何时产生中断, CPU预先并不知道。 80X86系列的CPU只有两个引脚(INTR和NMI)可以接收外部 的中断请求脉冲。相应地,硬中断可以分为两种类型:不可 屏蔽中断(来自CPU的NMI引脚)和可屏蔽中断(来自CPU的 INTR引脚)。
第八章
中
断
8.1 引言
中断的定义
所谓中断就是指CPU在正常运行程序时,由于内部/ 外部事件(或程序中的预先安排的事件)引起CPU 中止当前正在运行的程序,转而执行为这一事件服 务的程序,执行完毕,再返回被暂时中止的程序断 点处继续执行,这一过程就称为中断。
一、中断的优点 1.可以实现CPU与外设同步工作,以及实现多个 外设同时工作。
三、中断系统的功能
1. 实现中断及返回
当某一中断源发出中断请求时,CPU能决定是否响应 这个中断请求。若允许响应这个中断请求,CPU必须在现行 的指令执行完后,保护断点和现场。然后转到需要处理的中 断源的服务程序的入口,同时清除中断请求触发器。当中断 处理完后,再恢复被保留下来的各个寄存器和标志位的状态 (称为恢复现场),恢复IP和CS值(称为恢复断点),使CPU返回 断点,继续执行主程序。
软中断是指CPU执行在用户程序中安排的有定义的INT n指 令而引发的中断。之所以要强调是有定义的,是因为软件中 断定义的中断类型码范围内有的中断号系统没有定义与之配 套的中断服务程序。软中断不是由硬件产生,而是由用户在 程序中安排中断指令INT n时产生的。 显然,软中断的中断类型号是在中断指令中直接给出的。所 以,在软中断处理过程中CPU不会象硬件中断那样发中断响 应信号,也不要求中断控制器提供中断类型号。另一点需要 注意的是,产生软中断的时机是由用户程序特意安排而不是 随机的,因此,是可以预料的。这个特点与用户子程序调用 类似,而与硬件中断是不相同的。
一、软件确定中断优先权
软件采用查询技术。当CPU响应中断后,就用软件查 询以确定是哪些外设申请中断,并判断它们的优先权。 把各个外设的中断请求信号相“或” 后,作为INTR信号,故任一个外设 有中断请求,都可以向CPU送出 INTR信号。当CPU响应中断后,把 中断寄存器的状态,作为一个外设 读入CPU,逐位检测它们的状态, 若有中断请求就转到相应的服务程 序的入口
8.4.3 中断向量表
对应于每种中断源存在一个相应的中断服务程序,每一 中断服务程序都有一个确定的入口地址即中断向量, 把系统中所有中断源的中断向量集中起来放到存储器 的某一片连续区域内,这个存放中断向量的存储区就 叫中断向量表或中断服务程序入口地址表。 CPU把所有的256个中断向量集中起来,按中断类型号 从小到大的顺序放到主存储器的RAM中从最低地址 (物理地址为0)开始,长度为1024个字节(4个字节 ×256个向量=1024个字节=1KB),物理地址范围介于 00000H~003FFH的中断向量表中。每个中断向量占用 4个字节。在这4个字节中,包含着这个中断向量(或这 种中断类型)的服务程序的入口地址——前两个字节为 服务程序的IP,后两个字节为服务程序的CS。
1. 关中断 8086在CPU响应中断后,发出中断响应信号INTA的同时,内 部自动地实现关中断。 2. 保留断点 CPU响应中断,封锁IP+1,并且把IP和CS推入堆栈保留,以 备中断处理完毕后,能返回主程序。 3. 保护现场 为了使中断处理程序不影响主程序的运行,故要把断点处的有 关的各个寄存器的内容和标志位的状态,推入堆栈保护起来。 4. 给出中断入口,转入相应的中断服务程序 8086是由中断源提供的中断矢量形成中断入口地址(即中断服务 程序的起始地址)
8.2
最简单的中断情况
一、CPU响应中断的条件
1. 设置中断请求触发器——每个中断源有一个中断请 求触发器,中断源通过该触发器向CPU发请求信号, 直到CPU响应这个中断请求,才清除该请求信号。
2.设置中断屏蔽触发器——对于多个中断源的情
况,需要对中断请求进行控制,通过设置中断 屏蔽触发器来实现。
8.4.2 内部中断
8086可以有几种产生内部中断的情况: (1) DIV或IDIV指令 在执行除法指令时,若发现除数为0或商超过了 寄存器所能表达的范围,则立即产生一个类型为0 的内部中断。 (2) INT指令 如前所述,在8086的指令系统中有一条中断指 令——即INT n指令。这种指令的执行引起中断, 而且中断的类型可由指令中的n加以指定。
(2) 移位法 XOR IN RCL JC RCL JC ┇
AL,AL AL,[20H] AL,1 PWF AL,1 DISS
查询方法的优点是: (1)询问的次序即是优先权的次序。显然,最先询 问的,优先权的级别最高。 (2)省硬件。不需要有判断与确定优先权的硬件排 队电路。 ’ 但随之而来的缺点是: 由询问转至相应的服务程序入口的时间长,尤其 是在中断源较多的情况下。
(3) INTO指令 若上一条指令执行的结果,使溢出标志位O=1, 则INTO指令引起类型为4的内部中断。否则,此 指令不起作用,程序执行下一条指令。 (4) 单步执行 若标志位T=1,则CPU在每一条指令执行完以 后,引起一个类型为1的中断,这可以做到单步执 行,是一种强有力的调试手段。 8086规定这些中断的优先权次序为: 内部中 断、NMI、INTR,优先权最低的是单步执行。
在这条线上出现的中断请求,CPU是否响应 要取决于标志位I的状态,若I=1,则CPU就响应; 若I=0,则CPU就不响应。 注意: 在系统复位以后,标志位I=0;另外任一种 中断(内部中断、NMI、INTR)被响应后,I=0。所 以必须在一定的时候用STI指令来开放中断。 CPU是在当前指令周期的最后一个T状态采样 中断请求线,若发现有可屏蔽中断请求,且中断 是开放的(I标志为“1”),则CPU转入中断响应周 期。
1. 将类型码乘以4,作为中断向量表的指针。 2. CPU的标志寄存器入栈保护 3. 复制跟踪标志TF状态,接着清零TF和IF标志。 4. 把主程序断点处的IP和CS推入堆栈保护 5. 从中断向量表中取服务程序入口地址,分别送 给CS和IP。 6.CPU按新地址执行中断服务程序。
3. 中断必须是开放的—— 即CPU内部的中断允许 触发器必须置“1”。该触 发器对应的就是中断允许 标志位IF,所以可以用 STI和CLI指令来改变。 4. 现行指令执行结束—— CPU必须在现行指令执行 到最后一个机器周期的最 后一个T状态才去采用 INTR线。响应流程如右 图。
二、CPU对中断的响应 大体上可以分成六步:
二、 硬件优先权排队电路
1.中断优先权编码电路:由硬件编码器和比较器构成。
工作原理: ①若CPU不在处理中断,则“优 先权失效”信号为高电平,则出现任 一中断源请求,都能通过与门2发出 INTR信号。若同时有多个源请求中 断,则优先权编码组只对最高优先权 的编码,保证中断响应进入对应的中 断处理程序。 ②若CPU正在处理中断,则“优 先权失效”信号为低电平,与门2被 封锁。正在处理的外设优先权编码通 过数据总线送到优先权寄存器,对应 的编码B2B1B0送至比较器。新申请 中断的外设编码A2A1A0也送至比较 器。若A≤B,则 “A>B”端输出低 电平,与门1被封锁。只有当优先权 更高的中断源有请求时,A>B端才 输出高电平,从而打开与门1,向 CPU送出INTR信号。
2.实现优先权的排队
在计算机系统中通常有多个中断源。会出现两个或更 多个中断源同时提出中断请求的情况,这样就必须要设计 者事先根据轻重缓急,给每个中断源确定 一个中断级别— —优先权。 3. 高级中断源能中断低级中断源的中断处理 即实现中断嵌套;当CPU正在执行优先级较低的服务时, 如果有较高优先级的中断请求出现,则应暂时中断当前的处 理过程,转而去处理较高优先级的中断请求,完毕后再回来 处理较低优先级的中断。 。
2. 链式优先权排队电路
工作原理: 多个中断输入相或,产生INTR 信号送CPU。CPU执行完现行指 令,则响应中断,发出中断响应信 号。接下来则由链式排队电路决定 CPU进入哪个中断服务程序。 若上一级中断源有请求,对应 的F/F触发器输出为“1”,则其中 断输出亦为高电平,控制CPU转 至相应的服务程序入口,同时屏蔽 了本级和所有的低级中断。 若上一级没有中断请求,则对 应的F/F触发器输出为“0”,其中 断输出亦为低电平,当本级有中断 请求时,可转去执行本级的处理程 序,同时又屏蔽了所有低级中断请 求。