大工计算机原理-第6章 中断系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

你正在溜号,老师突然提问你,你回答完坐下后,接着溜号。

这就是现实中,中断的实例。

这一章的概念很重要
1、中断:当CPU正常运行时,系统外部、内部或现行程序本身若出现紧急事件,处理器必须立即强行中止现行程序的运行,改变机器的工作状态并启动相应的程序来处理这些事件,然后再恢复原来的程序运行,这一过程称为中断。

2、中断源:能够向CPU发出中断请求的中断来源称为中断源。

中断源分为(硬件中断源)和(软件中断源)。

中断源能发出中断请求信号到CPU,所以中断源中一般要求有(中断请求触发器),请求信号有(边沿请求)和(电平请求)两种。

3、中断系统的目的:维持系统正常工作,提高系统效率;实时处理;为故障处理作准备。

4、中断分类:中断分为(外部中断,也叫硬件中断)和(内部中断,也叫软件中断)两大类。

其中外部中断分为两类:
⑴可屏蔽中断INTR,受标志寄存器中的IF位控制;(高电平触发)
⑵不可屏蔽中断NMI,不受标志寄存器中的IF位控制。

(上升沿信号触发)
5、中断系统功能
⑴中断处理:发现中断请求、响应中断请求、执行中断服务程序、中断返回。

⑵中断控制:中断优先权排队、中断嵌套。

某优先权低的中断B正在处理中,允许另一个优先权高于它的中断A中断它(B)。

二、中断处理过程
8086CPU在每条指令的(最后一个时钟周期)检测(中断请求信号输入线INTR)。

我的理解:
检测:程序的执行就是一条条指令的执行,而每条指令执行后会自动检测是否有中断发生。

是否中断处理:如果检测到有中断发生,是否响应它呢?有两个条件:①当前是否开放中断?(也就是IF=1?)②现行指令执行完了吗?如果这两个条件都是成立,则进入中断处理阶段。

中断处理过程(######重要重要重要重要######):
1.关中断(中断响应信号INTA)
2.保存断点(指令指针IP值和CS值压入堆栈,也就是断点保护)
3.识别中断源(找到相应的中断服务程序的入口地址,就是中断的识别)
4.保护现场(把断点处有关寄存器的内容以及标志寄存器的状态压入堆栈保护)
5.执行中断服务程序(此期间,可在适当时刻重新开放中断,以允许响应较高优先级的中断)
6.恢复现场并返回
我的解释:1-有人请求我了,其它人别请求我了。

2-记住此位置,以便将来再回来。

3-谁请求的我,找到它。

4-记住更详细的细节,以便回来时恢复现场。

5-到请求我的那疙瘩去一趟,这时候又可以让一些人请求我了。

6-完成请求,我回来了,恢复现场,就像什么都没发生。

● 现场:是指进入中断服务程序之前,CPU 各个寄存器的状态。

前3项是中断响应过程,一般由中断系统硬件负责完成;后3项是中断处理过程,通常是由用户或系统程序设计者编制的中断处理程序(软件)负责完成。

● 中断优先级:实际系统中,多个中断请求可能同时出现,但中断系统只能按一定的次序来响应和处理,这时CPU 必须确定服务的次序,即根据中断源的(重要性)和(实时性),照顾到(操作系统处理的方便),对中断源的响应次序进行确定。

这个响应次序称为中断优先级。

我的解释:中断请求可能同时出现,但同一时刻我只能处理一个,怎么办?有三点依据来确定我处理它们的次序:根据中断源的①重要性和②实时性,照顾到③操作系统处理的方便。

这个次序就是中断优先级。

重要重要
⏹ 软件查询法:软件来确定中断优先级(硬件简单,实时性差)。

非解决之道!
⏹ 硬件组成中断优先级编码电路来实现。

真正解决之道!
✓ 简单硬件查询方式——菊花链法
✓ 中断控制专用硬件方式

中断嵌套的深度:可多级,级数原则上不受限制,取决于堆栈深度。

● 中断分类:
二、中断向量表
中断向量:实际上就是中断服务程序的入口地址,每个中断类型对应一个中断向量。

每个中断向量占(4字节)的存储单元。

其中,前两个字节单元存放中断服务程序入口地址的偏移量(IP),低字节在前,高字节在后;后两个字节单元存放中断服务程序入口地址的段基值(CS),也是低字节在前,高字节在后。

(一定要记住呀)
中断向量表:存放中断向量的存储区称为中断向量表。

通常在存储器的低地址区。

8086/8088有256种中断类型,类型号为0-255(或0-FFH ),共有256个中断向量,每个占4个存储单元,所以需要1024个字节,在存储器的最低端,地址从00000H-003FFH ,这块地址空间就是中断向量表。

(一定要记住呀)先是IP 的低高字节,再是CS 的低高字节。

● 从低地址开始:
5个专用的中断:#0-除数为0中断、#1-单步中断、#2-非屏蔽中断(NMI)、#3-断点
中断、#4-溢出中断
27个保留的中断:
大部分用于系统中断,如20H-3FH 为DOS 中断调用。

● 中断向量按中断类型码从0-255顺序存放。

知道了中断类型号,便可计算出相应的中断
向量在表中存放的位置。

从0开始哟!
先是IP 的低高字节,再是CS 的低高字节。

中断类型号×4=中断向量指针的低地址 →(IP )
中断类型号×4+2 =中断向量指针的高地址 →(CS )
● 设中断类型码为N ,试叙述使程序转入相应中断服务程序的控制过程。

CPU 响应中断时,只需要把中断类型码N 左移2位(乘以4),即可得到中断向量在中断向量表中的对应地址4N ,然后把由此地址开始的两个低字节单元的内容装入IP 寄存器: IP ← (4N, 4N+1); 再把两个高字节单元的内容装入 CS 寄存器: CS ←(4N+2, 4N+3)。

这就是使程序转入中断类型码为N 的中断服务程序的控制过程
● 要会计算。

◆ 例子1:中断类型码为27H 的中断所对应的中断向量应存放在:
中断类型码27H=0010 0111B ,左移2位得:1001 1100B (9CH )。

可得向量表地址为:
从0000H :009CH 开始的4个连续字节单元中 如果相应存储单元的内容如下图所示,按先低后高原则,IP =4321H ,CS =8765H 。

那么27H 号中断的中断服务程序的入口地址即为8765H:4321H 。

0000:009FH
0000:009CH
◆ 例子2:设中断向量表中(00128H )=258AH ;(0012AH )=3C02H ;当执行INT 4AH
指令后,则转移到中断子程序入口的物理地址是多少?
解: 4AH =0100 1010B ,左移2位,即4AH*4=128H
(IP )=(0128H )=258AH ,(CS )=(012AH )=3C02H
转移到中断子程序入口的物理地址=3C02H :258A =3C02H*16+258AH=3E5AAH
◆例子3:在一个系统中,对应于中断类型号27H的中断处理程序放在
2345H:7890H开始的内存区域,请计算相应的中断向量表地址及内容。

解:0000:009CH~009FH 存放(90H、78H、45H、23H)
●外部中断,也称硬件中断。

8086 CPU为外部中断提供两条引线,即(NMI)和(INTR),
用来输入中断请求信号。

(注意填空)
1、非屏蔽中断(NMI):不受中断标志位的控制,中断类型号固定为2,所以中断向量放
在0000:0008开始的4个单元中。

N MI中断一般用于紧急情况的处理。

2、可屏蔽中断(INTR):受中断标志位的控制,IF=1,CPU才能响应INTR中断。

CPU响
应INTR中断时,往INTA引脚上发两个负脉冲(因INTR是0有效),外设接到第二个负脉冲后,立即往数据总线上送出中断类型码,供CPU读取。

3、若NMI和 INTR 同时发生,则优先响应NMI。

●内部中断即软件中断,它是由于CPU执行了INT n(含INT 3)、INT 0指令,或者由于除
法出错以及进行单步操作所引起的中断,主要包括:INT n指令中断、断点中断、溢出中断、除法错中断以及单步中断。

(与专用的5个中断,基本相对应!)
●要记住5个专用类型:
◆类型0中断-----除数为0中断(软)
◆类型1中断-----单步中断(软)
◆类型2中断-----非屏蔽中断(NMI) (硬件中断)
◆类型3中断-----断点中断(软)
◆类型4中断-----溢出中断(软)
●单步中断(类型1)
当把CPU标志寄存器的TF=1后,CPU便处于单步工作方式。

在单步工作方式下,CPU每执行完一条指令,就会自动产生一个1 型中断,进入1型中断处理程序。

此处理程序显示CPU内部各寄存器的内容并告知某些附带的信息。

●简答题:
对一个大的程序,不可能对整个程序全部用单步方式来调试,而只能先将程序中的某错误确定在程序中的一小段中,再对这一小段程序用单步方式跟踪调试。

断点中断就是用来达到这个目的的。

◆在所有INT n
断指令都是两字节指令。

◆内部中断的特点是:
(1) 中断类型码由CPU内部自动提供。

(2) 除单步中断外,所有内部中断都不可以用软件的方法来禁止(屏蔽)。

单步中断可以通过软件将TF标志置1或清0来予以允许或禁止。

(3) 除单步中断外,所有内部中断(也就是软件中断)的优先级都比外部中断高。




所有内部中断的优先级都比外部中断高。

(错) ◆
所有软件中断的优先级都比硬件中断高。

(错) ◆
所有内部中断都不可以用软件的方法来禁止(屏蔽)

所有软件中断都不可以用软件的方法来禁止(屏蔽)◆ 所谓断点就是指响应中断时,主程序中当前指令下面的一条指令的段寄存器CS 的值和
指令指针寄存器IP 的值压入堆栈,先压CS ,再压IP 的值。

(与中断向量表的顺序相反)
#####中断类型号的获得#####
⑴ 除法错误、单步中断、非屏蔽中断NMI 、断点中断和溢出中断,分别由CPU 内部自动提供中断类型号(0-4)。

⑵ 软件中断(内部中断),则是从指令流中,即在第2个字节中读得中断类型号。

⑶ 硬件中断(外部中断),可屏蔽中断INTR 可以用不同的方法获得中断类型号,通常由硬件提供,如8259A 芯片可以将中断类型号送到数据总线上,由CPU 读取而获得。

至于不可屏蔽中断NMI ,中断类型码由CPU 内部自动产生,固定为类别码2。

⏹ Intel 8259A (可编程中断控制器(PIC Programmable Interrupt Controller ))用于管理和控制8086/8088的外部中断请求,实现优先级判决,提供中断类型码,屏蔽中断输入等功能。

⏹ 使用单片8259A 可以管理8级中断;采用级联方式,可扩充到64级
⏹ (但需要用9片8259A 。

1主,8从)。

⏹ CAS2-CAS0 ------级联线(CASCADE LINES ),传送3位标识码,用于区分特定的从控制器。

双向:对于主片为输出,对于从片为输入。

主片CAS 0~CAS 2为输出,从片CAS 0~CAS 2为输入;主从片间对应的CAS 0~CAS 2相连;(见下图)
⏹ EN SP /------从片(Slave PIC)/允许缓冲器信号。

作为输入时,8259A 作为主片(EN SP /=1)下图接+5V
8259A 作为从片(EN SP /=0)下图接地
#########东大课件,级联的解释##########
一个系统中,8259A 可以级连,有1个主8259A ,若干个(最多8个)从8259A 。

级连时,主8259A 的三条级连线CAS0~CAS2作为输出线,连至每个从8259A 的CAS0~CAS2。

每个从8259A 的中断请求信号INT ,连至主8259A 的一个中断请求输入端IR 。

主8259A 的INT 线连至CPU 的中断请求输入端SP*/EN*在非缓冲方式下,规定该8259A 是主片(SP*=1)还是从片(SP*=0)
主 从
从。

相关文档
最新文档