Presentation is loading. Please wait.

Presentation is loading. Please wait.

第7章 中断 中断请求 中断响应 中断服务 中断结束 中断处理

Similar presentations


Presentation on theme: "第7章 中断 中断请求 中断响应 中断服务 中断结束 中断处理"— Presentation transcript:

1 第7章 中断 中断请求 中断响应 中断服务 中断结束 中断处理
第7章 中断 中断:指当CPU检测到某种服务请求后,暂时中止现行程序而转去执行一个特定的中断服务程序,当中断服务程序执行完毕后,返回到原来程序的中断处继续执行 中断处理的隐操作:程序状态及程序断点地址的进栈及出栈。 中断请求 中断响应 中断服务 中断结束 中断处理

2 7.1 概述 中断过程一般包括五个方面,即中断申请、中断排队、中断响应、中断服务和中断返回 中断系统其他功能: 支持多中断源和多种中断源。
7.1 概述 中断过程一般包括五个方面,即中断申请、中断排队、中断响应、中断服务和中断返回 中断系统其他功能: 支持多中断源和多种中断源。 支持中断屏蔽处理。 支持中断嵌套处理。 支持中断优先级修改。 支持中断结束方式选择。 中断源:能够发出中断请求信号的来源 中断源通常有如下几种: 1.一般的I/O设备,如键盘、打印机等。 2.实时时钟及过程多数,如时钟电路、A/D转换等。 3.故障源,包括硬件故障及软件故障,如电源掉电、存储器故障、运算溢出等。 4.软件设置中断源,如在程序中用中断指令而产生的中断。

3 7.2 最简单的中断情况 中断申请是由中断源发出的请求服务的信号 中断源能够产生中断申请信号有两个条件: 1.中断源自身工作已经“准备就绪”
7.2 最简单的中断情况 中断申请是由中断源发出的请求服务的信号 中断源能够产生中断申请信号有两个条件: 1.中断源自身工作已经“准备就绪” 2.CPU允许该中断源申请中断 中断响应条件: 1.外部设备有中断请求 2.CPU自身允许中断 3.没有更高级的中断正在被服务 4.CPU在每条指令结束后响应中断 在中断响应周期,硬件自动完成一些必要的操作: 1.关中断 2.保护断点:通过堆栈及相关硬件实现EFLAGS、CS、EIP的保护。并清除IF和TF。 3.将中断服务程序的入口地址送入程序计数器,从而实现转入相应的中断服务程序

4 设置中断请求的情况

5 具有中断屏蔽的接口电路

6 中断时序流程

7 7.3 中断优先权 在中断系统中,根据中断源的轻重缓急,为每一个中断源规定了一个服务优先级别,这就是所谓的中断优先级,或叫中断优先权
7.3 中断优先权 在中断系统中,根据中断源的轻重缓急,为每一个中断源规定了一个服务优先级别,这就是所谓的中断优先级,或叫中断优先权 中断识别 只有外部硬件中断需要进行识别,其余不需要识别。中断识别由中断控制器完成。 中断优先级 原则:按机器故障、DMA、外围硬件、软件递减。 结果:CPU专用>DMA>外围硬件>BIOS>DOS>自由。即基本按中断向量表排序。外围硬件一般可由用户修改其优先权。 中断优先权排队一般有两种方法,即软件查询法和硬件排队法 软件查询法:用软件查询中断源,根据查询的顺序先后来确定中断源的优先级。先查询的优先级就高,后查询的优先级就低,只要改变查询次序,就可以改变中断源的中断优先级 硬件排队法:用硬件判优逻辑电路来确定申请中断中的最高优先级,系统中各中断源的优先级别是由它们在判优电路中的位置决定的

8 优先权软件查询硬件电路

9 优先权软件查询程序流程

10 编码器和比较器的优先权排队电路

11 链式优先权排队电路

12 7.4 中断控制器8259A 8259A是中断管理芯片 8259A的主要功能为:
1.具有8级优先权控制,通过芯片级联可扩展至64级优先权控制 2.每一级中断均可通过编程屏蔽或允许 3.在中断响应周期可提供相应的中断类型号 4.有多种工作方式,可通过编程选择 5.可与CPU直接连接,不需外加硬件电路

13 8259A的引线及内部结构 中断请求寄存器IRR:寄存所有IR输入线输入的中断请求信号,即保存正在请求服务的中断级
中断服务寄存器ISR:保存当前被CPU服务的中断级,也就是记录正在被处理的中断请求 中断屏蔽寄存器IMR:对各中断源的中断请求信号(IRO~IR7)实现开关控制

14 8259A的中断请求 … & 内部逻辑:IRR、IMR、ISR及控制电路。 中断请求过程:IR->INT。 INT ISR编码
中断请求优先级编码器 中断请求寄存器IRR IR0 IR7 中断屏蔽寄存器IMR D0 D7 ≥1 B0 B1 B2 A>B A0 A1 A2

15 8259A的工作过程 (1)某一条或几条中断请求线(IRO~IR7)有中断申请,变为高电平,使中断请求寄存器IRR的相应位置“1”
(2)IMR对IRR屏蔽。未被屏蔽的请求信号经优先权电路判别最高优先级,再经由优先级方式确定没有更高级优先权的中断,则8259A的INT端输出为“1”,向CPU提出中断请求 (3)CPU响应中断后发出中断响应信号。在中断响应过程中,CPU要发出两次INTA信号。当8259A收到第一个INTA信号后,ISR中当前被选中的最高优先级对应的那一位置“1”,同时IRR中的相应位被清“0”,表示该位上的中断请求已被CPU所接受 (4)8259A收到第二INTA信号后,驱动数据总线将对应的中断类型码输出 (5)如果是自动结束中断方式(AEOI),则在第二个INTA脉冲结束时将ISR中相应置“1”的位复位,否则该位的“1”将一直保持,直到CPU发出EOI命令为止

16 8259A与标准总线的连接(1)

17 8259A与标准总线的连接(2)

18 8259A的工作方式 四种主要的工作方式: 全嵌套 四种从属的工作方式: 中断结束方式 两大工作类型: 单片工作 循环优先级 特定屏蔽
程序查询方式 四种从属的工作方式: 中断结束方式 读状态 中断请求触发方式 缓冲器方式 两大工作类型: 单片工作 多片级连工作

19 8259A在初始化工作完成后若未设定其它的工作方式,就自动进入全嵌套方式 全嵌套方式特点:禁止同优先级或低优先级请求发生
1.中断请求的优先级固定,其顺序是IR0最高,逐次减小,IR7最低,(从IR0~IR7降序) 2.中断服务寄存器ISR保存优先权电路确定的优先级状态,相应位置“1”,并且一直保持这个服务“记录”状态,直到CPU发出中断结束命令为止 3.在ISR置位期间,不再响应同级及较低级的中断请求,而高级的中断请求如果CPU开放中断的话仍能够得到中断服务 4.IR7~IR0的中断请求输入可分别由中断屏蔽寄存IMR的D7~D0的相应位屏蔽与允许,对某一位的屏蔽与允许操作不影响其它位的中断请求操作 全嵌套工作方式由ICW4的D4=0来确定

20 两种:自动循环优先级方式、特殊循环优先级方式 自动循环:刚被服务的IR的优先级降至最低
8259A的工作方式——循环优先级方式 两种:自动循环优先级方式、特殊循环优先级方式 自动循环:刚被服务的IR的优先级降至最低 各设备优先级相同,当某一个设备受到服务之后,它的优先级就自动地排到最后。优先级由高到低的顺序: 有一个最低优先权指针,哪一个设备刚被服务后,它就被赋予最低优先权指针。 自动循环优先级方式由OCW2的R=1、SL=0来确定 特殊循环:指定的IR的优先级降至最低。 特殊循环优先级方式与自动循环优先级方式的不同之处在于:在自动循环优先级方式中,某一设备在被服务之后被确定为最低优先权;而在特殊循环优先级方式中,是通过编程来确定某一设备为最低优先级 特殊循环优先级方式由OCW2的R=1、SL=1来确定,而L2L1L0用于指定最低优先级的二进制编码

21 8259A的工作方式——特定屏蔽方式 每个中断请求输入信号都可由中断屏蔽寄存器IMR的相应位进行屏蔽,IMR的D0对应IR0,D1对应IR1,…,D7对应IR7 IMR相应位为“1”则屏蔽,为“0”则允许 IMR寄存器由操作命令OCW1进行设置 屏蔽方式有两种:正常屏蔽方式、特定屏蔽方式 正常屏蔽方式: IMR中相应位置位 每一个屏蔽位对应一个中断请求输入信号 屏蔽某一个中断请求输入信号对其他请求信号没有影响 未被屏蔽的中断请求输入信号按照设定的优先级顺序工作,同级和低级的中断请求被禁止,如果CPU允许中断,可实现中断嵌套 特定屏蔽方式:开放比自己优先级低的IR 设定特定屏蔽方式后,IMR中为“1”的位仍然屏蔽相应的中断请求输入信号,但所有未被屏蔽的位被全部开放,都可以申请中断 特定屏蔽方式由OCW3的ESMM和SMM确定,设定时ESMM=1、SMM=1,复位时ESMM=1、SMM=0

22 8259A的工作方式——程序查询方式 不使用中断,用软件寻找中断源 在这种方式下,8259A不向CPU发送INT信号,或者CPU禁止中断输入 申请中断的优先级不是由8259A提供的中断类型码而是由CPU发出查询命令得到的 查询过程: 1.CPU先向8259A发出查询命令 2.8259A接到查询命令后,就把下一个IN指令(对偶地址端口的读指令)产生的脉冲作为中断响应信号,此时,若有中断请求信号,则在ISR中相应位置“1”,并把该优先级送上数据总线 3.8259A供CPU读取查询的代码格式为: 4.I是中断请求标志 I=1有中断,W2W1W0有效,W2W1W0表示申请服务的最高中断优先级 I=O没有中断,W2W1W0无效 在查询方式下,CPU不需执行中断响应周期,不必安排中断向量表 查询方式由OCW3的P=1来确定

23 8259A的中断结束方式有两种:命令中断结束方式(EOI)和自动中断结束方式(AEOI)
中断结束方式是指中断如何结束的方法 这里的“结束”不是指中断服务程序的结束,中断服务程序的结束用IRET指令就可完成,这里的“结束”是指如何和何时使8259A中的ISR中的相应位清零。ISR中某位为“1”,表示CPU正在为之服务;某位为“0”表示CPU已经停止(结束)为之服务。而IRET指令主要是恢复程序的断点,它并不能使ISR的相应位清零 8259A的中断结束方式有两种:命令中断结束方式(EOI)和自动中断结束方式(AEOI)

24 自动中断结束方式(AEOI):中断响应后ISR中最高优先级位自动复位
在自动中断结束(AEOI)方式下,8259A自动地在最后一个中断响应脉冲的后沿将中断服务寄存器ISR中的相应位清零 过程:中断请求,CPU响应,发第一个,ISR相应位置“1”,CPU发第二个,8259A提供中断类型码,ISR相应位清零,结束。显然,ISR的相应置“1”位在CPU中断响应周期内自生自灭,因此在ISR中不会有两个或两个以上的置“1”位 应用场合:8259A单片系统,或不需要嵌套的多级中断系统。AEOI方式只能用于主片8259A,不能用于从片8259A 自动中断结束方式由ICW4的AEOI=1确定

25 命令中断结束方式(EOI):中断服务程序返回前,需要处理程序发出对ISR中相应位复位的中断结束命令
8259A的工作方式——中断结束方式(3) 命令中断结束方式(EOI):中断服务程序返回前,需要处理程序发出对ISR中相应位复位的中断结束命令 命令中断结束方式(EOI)是在中断服务程序返回之前,向8259A发中断结束命令(EOI),使ISR中的相应位清零。它包括两种情况 ①非特殊EOI命令:全嵌套方式下的中断结束命令称为非特殊EOI命令,该命令能自动地把当前ISR中的最高优先级的那一位清“0”( ISR中最高优先级位复位) ②特殊EOI命令:非全嵌套方式下的中断结束命令称为特殊EOI命令。在非全嵌套方式下,由于无法确定最后响应的是哪一级中断(非全嵌套方式各中断源没有固定的优先级别,因此也就不知道谁高谁低),所以应向8259A发出特殊EOI命令,即指定哪一级中断返回,使其ISR中的相应位清“0”(命令中指定的ISR中相应位复位)

26 读8259A的状态是指读8259A内部的IRR、ISR和IMR的内容
(1)读IRR:先发出OCW3命令(使RR=1、RIS=0,地址A0=0),在下一个RD脉冲时可读出IRR,其中包含尚未被响应的中断源情况 (2)读ISR:先发出OCW3命令(使RR=1、RIS=1,地址A0=0),在下一个RD脉冲时可读出ISR,其中包含正在服务的中断源情况,也可看中断嵌套情况 (3)读IMR:不必先发OCW3,只要读奇地址端口(A0=l),则可读出IMR,其中包含设置的中断屏蔽情况

27 8259A的工作方式——中断请求触发方式(1) 8259A的中断请求寄存器IRR中有8个中断请求触发器,分别对应8个中断请求信号的输入端IR0-IR7,这些触发器的触发方式有两种,即边沿触发和电平触发 (1)边沿触发:当输入端有从低电平到高电平的正跳变时,则产生中断请求(IRR中相应位的触发器被触发置“1”,而不是直接向CPU申请中断)。此后,即使输入端仍然保持高电平也不会再产生中断

28 8259A的工作方式——中断请求触发方式(2) (2)电平触发:当输入端产生高电平时产生中断请求。只要高电平就可以,不需要脉冲跳变。但需要注意的是,在电平触发方式下,在发出EOI命令以前,或CPU开放中断以前,必须去掉中断请求信号(使其变为低电平),否则将产生第二次中断

29 缓冲器方式:在8259A和数据总线之间挂接总线驱动器的方式
既然挂接了总线驱动器(即总线缓冲器),在进行数据操作时就必须使之开启,并符合数据传送方向。因此,在缓冲器方式下,引脚将使用功能,并使之输出一个有效低电平,开启缓冲器工作 该方式多用于级联的大系统 缓冲器方式由ICW4的BUF=1确定 关于SP/EN: 非缓冲方式:小系统中,8259A数据线直接连系统数据总线,不需要总线缓冲器,此时SP/EN表示级联时主/从关系。 主片:SP/EN接高电平 从片:SP/EN接低电平 缓冲方式:大系统中,数据总线都具有总线缓冲器,此时SP/EN表示数据传送方向,级联时主/从关系通过软件设定ICW4来决定。

30 8259A的工作方式——特殊的全嵌套方式 特点:禁止低优先级请求发生 该方式适用于多片级连,级联时主片特殊全嵌套,从片全嵌套。 该方式与普通的全嵌套方式工作情况基本相同,区别在于两点: (1)当某从片的一个中断请求被CPU响应后,该从片的中断仍未被禁止,即该从片中的高级中断仍可提出申请(全嵌套方式中这样的中断是被屏蔽的,因为这种中断对从片而言后者是高级中断,可以嵌套,但对主片而言,由于它们来自于同一个从片,故中断优先级相同,而在全嵌套方式中,同级和低级中断是被禁止的) (2)在某个中断源退出中断服务程序之前,CPU要用软件检查它是否是这个从片中的唯一中断。检查办法是:送一个非特殊中断结束命令(EOI)给这个从片,然后读它的ISR,检查是否为0,若为0则唯一,即只有这一个中断在被服务,没有嵌套。若不为0则不唯一,说明还有其他的中断在被服务,该中断是嵌套在其他中断里的。只有唯一时,才能把另一个非特殊EOI命令送至主片,结束此从片的中断

31 (2)缓冲方式下,主片和从片的设定由ICW4的M/S位确定,M/S=1是主片,M/S=0是从片。M/S的状态在BUF=l时有意义
8259A的工作方式——多片级连方式 级连系统中,每个从片的中断请求输出线INT直接连到主片的某个中断请求输入线上,主片的CAS0~CAS2是输出线,输出被响应的从片代码,从片的CAS0~CAS2是输入线,接收主片发出的从片代码,以便与自身代码相比较 级联方式的要点如下: (1)一个8259A主片至多带8个从片,可扩展至64级 (2)缓冲方式下,主片和从片的设定由ICW4的M/S位确定,M/S=1是主片,M/S=0是从片。M/S的状态在BUF=l时有意义 (3)在非缓冲方式下,主片和从片由SP/EN引脚的SP功能确定,SP=1是主片,SP=0是从片 (4)在级连系统中,主片的三条级连线相当于从片的片选信号,从片的INT是主片的中断请求输入信号 (5)主片和从片需要分别进行初始化操作,可设定为不同的工作方式

32 全嵌套方式、自动中断结束方式、中断请求触发方式、缓冲器方式、恃殊的全嵌套方式、级连方式等是由初始化命令字ICW来设定的
8259A的工作方式——设定命令字 上述的各种工作方式: 全嵌套方式、自动中断结束方式、中断请求触发方式、缓冲器方式、恃殊的全嵌套方式、级连方式等是由初始化命令字ICW来设定的 而循环优先级方式、特定屏蔽方式、查询方式、命令中断结束方式、读8259A状态等是由操作命令字OCW来设定的

33 8259A的初始化编程 (1) 初始化编程:指系统在上电或复位后对可编程器件进行控制字设定的一段程序

34 8259A的初始化编程 (2) 8259A内部有7个寄存器,分为两组:初始化命令寄存器组和操作命令寄存器组
初始化命令寄存器组包括4个寄存器:ICW1~ICW4对应的寄存器 操作命令寄存器组包括3个寄存器:OCW1~OCW3对应的寄存器。 由于8259A只有一条地址线A0,所以它只能有两个端口地址,而8259A有7个命令字,每个命令字要写入相应的寄存器。为此,采取以下几点措施: 第一,以端口地址区分 第二,把命令字中的某些位作为特征码来区分 第三,以命令字的写入顺序来区分 在PC/XT中,8259A的两个端口地址分别为20H和21H

35 PC/AT级联8259端口地址 PIC1 PIC2 操作 内容 特征位 时序 D4D3D2 20H 0A0H 写 ICW1 1** 无
OCW2 00* OCW3 01* 21H 0A1H ICW2~ICW4 ICW2→ICW4 OCW1 初始化后 IRR,ISR OCW3决定 查询字 IMR

36 8259A 初始化命令字 8259A初始化命令字有4个:ICW1、ICW2、ICW3、ICW4
8259A在进入正常工作之前,必须将系统中的每一个8259A进行初始化设置,以此建立8259A的基本工作条件 写入的初始化命令字一般为2~4个(在某些条件下,4个初始化命令字并非必须全部写入),最多为4个,然而,ICW1使用偶地址,而ICW2、ICW3、ICW4都使用奇地址,为了相互区别,初始化命令字的写入必须有一个固定的顺序 系统上电或复位以后,对8259A第一件要做的工作就是按顺序写入初始化命令字

37 8259A初始化命令字 —— ICW1 ICW1的主要功能:确定级连方式,触发方式 写入ICW1后,8259A内部自动复位,其复位功能为:
(2)清除IMR和ISR (3)IRR状态可读 (4)优先级排队,IR0最高,IR7最低 (5)特殊屏蔽方式复位 (6)设定中断请求信号由低变高的边沿触发有效 (7)自动EOI循环方式复位

38 8259A初始化命令字 —— ICW2 ICW2的主要功能:确定中断向量,中断类型码 例:如果ICW2为08H,则 IR3的中断类型号(中断向量)为08H+03H=0BH

39 8259A初始化命令字 —— ICW3 ICW3的主要功能:确定主片从片的级连状态,即确定主片的连接位和从片的编码

40 8259A级联举例(1) 级联方式中断请求及响应过程: 主片请求:与非级联一致。
主片响应:收到第一个INTA后,对级联的IR请求,则从CAS线送出该IR编码;否则,在第二个INTA返回中断类型号。 从片请求:与非级联一致,但其INT送到主片,服从主片的请求规则。 从片响应:通过CAS线译码,选中时在收到第二个INTA后,返回中断类型号。

41 8259A级联举例(2) 从片可以连到主片的任何一个中断请求输入端

42 8259A初始化命令字 —— ICW4 ICW4的主要功能:选择CPU系统,确定中断结束方式,规定是主片还是从片,选择是否采用缓冲方式

43 写完ICW后,8259A建立了基本的工作环境 初始化命令字一定要在系统复位后首先写入8259A,写入时要严格按照写入顺序,不允许颠倒
写完初始化命令字后,8259A已经建立了基本的工作环境,可以接受中断请求,也可以写入操作命令字OCW来改变某些中断管理方式 操作命令字可以随时写入、修改,但初始化命令字一经写入一般不再改动 如果在写入初始化命令字后不写入操作命令字,则8259A便处于全嵌套工作方式,即中断优先级为IR0最高,IR7最低,禁止同级及低级中断,高级中断可嵌套处理

44 8259A 操作命令字 在初始化命令字写入8259A之后,8259A就准备接收中断请求输入信号了
在8259A工作期间,CPU可以随时通过操作命令字使8259A完成各种不同的工作方式 8259A有三种操作命令字:OCW1、OCW2和OCW3 在写入时,它们与初始化命令字不同,它们不是按一定的顺序写入,而是按设计者的要求写入

45 8259A 操作命令字 —— OCW1 OCW1的主要功能:保存中断屏蔽字

46 8259A 操作命令字 —— OCW2 OCW2的主要功能:控制8259A的中断循环优先级方式及发送命令中断结束方式
R:优先级循环控制位。R=0固定优先级, R=1循环优先级 SL:特殊循环控制,SL=1使L2-L0对应的IR为最低优先级, SL=0使L2-L0无效 EOI:中断结束命令, EOI=1中断结束命令有效 L2-L0:指明对应的IR位

47 8259A 操作命令字 —— OCW3 OCW3的主要功能:设定查询方式和特殊屏蔽方式

48 8259A编程注意事项 不同8259A的I/O端口地址不同 严格按初始化顺序
全嵌套方式时,初始IR优先级IR0最高 对于中断服务程序,要注意: 使用正确的中断号 中断服务程序入口的正确设置 中断程序执行时间的正确估计 中断的打开与关闭 中断结束处理及返回

49 8259A程序分析 INTM00 EQU 020H ;8259A端口0 INTM01 EQU 021H ;8259A端口1 ……
MOV AL, B ;ICW1:边沿触发,要ICW4; ;单片方式,不要ICW3。 OUT INTM00, AL JMP SHORT $+2 ;I/O端口延时 MOV AL, B ;ICW2:设置中断向量,起始的 ;中断向量为08H。 OUT INTM01, AL JMP SHORT $+2 MOV AL, B ;ICW4:非缓冲,全嵌套,非自 ;动中断结束(EOI)。

50 8259A编程及中断程序设计(1) 例 A单片应用 在某8088系统中扩展一片中断控制器8259A,其端口地址由74LS138译码器译码选择,假设为8CH和8DH。中断源的中断请求线连到IR7输入线上,边沿触发方式,IR7的中断类型码为77H,其它条件保持8259A的复位设置状态。要求: ① 写出8259A的初始化程序 ② 写出中断类型码为77H的中断向量设置程序 1.8259A的初始化程序 初始化程序包括写入ICW1、ICW2和ICW4(由于单片使用,不需写入ICW3),并且必须按规定的顺序写入。 (l)ICW1命令字。单片,边沿触发,需要ICW4,故为000100l1B=13H,写入偶地址。 (2)ICW2命令字。IR7的中断类型码为77H,即可作为ICW2命令字写入,写入奇地址。 (3)ICW4命令字。8088CPU,一般全嵌套方式,正常EOI结束,非缓冲方式,故命令字的组合为 B=01H,写入奇地址。 (4)OCW1命令字。系统只使用了IR7,为防止干扰,产生误动作,应将IR0~IR6屏蔽掉,屏蔽字为 B=7FH,写入奇地址。

51 8259A编程及中断程序设计(2) (5)初始化程序段为: CLI MOV AL, 13H ;ICW1 OUT 8CH,AL
0UT 8DH,AL MOV AL, 01H ;ICW4 OUT 8DH,AL MOV AL, 7FH ;OCW1 STI

52 8259A编程及中断程序设计(3) 2.中断类型码77H的中断向量设置程序
假设相应中断服务程序名为INTP,该符号地址包含段值属性和段内偏移量属性,将这二者分别存入中断向量地祉,中断类型码77H的中断向量地址为77H×4=1DCH,即占用1DCH~1DFH 4个单元;其中1DEH~1DFH存放INTP的段地址,1DCH~1DDH存放INTP的段内偏移量 我们用串指令完成中断向量的设置,程序如下: CLI MOV AX, 0 MOV ES, AX ;中断向量表段地址 MOV DI, 1DCH ;中断向量表偏移地址 MOV AX, OFFSET INTP ;中断服务程序偏移地址 CLD STOSW MOV AX, SEG INTP ;中断服务程序段地址 STI

53 8259A编程及中断程序设计(4) 例2 8259A级连应用 某系统有两片8259A:
对主片,IR2和IR5接有外部中断源请求,中断类型号分别为62H和65H,IR4级连,接从片8259A的INT信号,主片的中断服务程序在同一段,段地址为4000H,两个中断服务程序的入口地址偏移值是2500H和2800H 对从片,IR0和IR3上接有外部中断源请求,中断类型号分别为40H和43H,输出的INT接主片8259A的IR4,从片的中断服务程序在同一段,段地址为3000H,偏移地址分别为1230H和4560H 要求分别写出主8259A和从8259A的初始化程序和中断向量设置程序 1.对主片8259A的初始化和中断向量设置 (1)初始化要求(已有条件) ① 主片8259A的IR4接一个从片,S4=1 ② 中断请求信号边沿触发,LTIM=0 ③ 中断类型号为60H~67H,ICW2=60H ④ 一般EOI中断结束方式,AEOI=0 ⑤ 非缓冲方式,SP/EN=1,BUF=0 ⑥ 采用特殊全嵌套方式,SFNM=1。 ⑦ 除IR2、IR4、IR5以外,屏蔽所有中断,屏蔽字为 B

54 8259A编程及中断程序设计(5) (2)初始化程序: MOV AL, 11H ;IOW1 MOV DX, MPORT0 ;偶地址
0UT DX, AL MOV AL, 60H ;ICW2 MOV DX, MPORT1 ;奇地址 MOV AL, 10H ;ICW3 MOV AL, 11H ;ICW4 OUT DX, AL MOV AL, 0CBH ;OCW1 MOV AL, 20H ;OCW2

55 8259A编程及中断程序设计(6) (3)中断向量设置 采用绝对地址设置方法,程序如下: SEGMENT AT 0 0RG 62H×4
MINTR2 DW H ;IR2中断服务地址 DW H ORG 65H×4 MINTR5 DW 280OH ;IR5中断服务地址

56 8259A编程及中断程序设计(7) 2.对从片8259A的初始化和中断向量设置 (1)初始化要求(已有条件)
① 从片8259A接在主片IR4上,ICW3=04H。 ② 中断请求信号边沿触发,LTIM=0。 ③ 中断类型号为40H-47H,ICW2=40H。 ④ 正常EOI中断结束方式,AEOI=0。 ⑤ 非缓冲方式,SP/EN=0,BUF=0。 ⑥ 采用特殊全嵌套方式,SFNM=1。 ⑦ 除IR0和IR3以外,屏蔽所有的中断输入,屏蔽字为llll0ll0B=F6H。

57 8259A编程及中断程序设计(8) (2)初始化程序: MOV AL, 11H ;ICW1 MOV DX, SPORT0 ;偶地址
0UT DX, AL MOV AL, 40H ;ICW2 MOV DX, SPORT ;奇地址 MOV AL, 04H ;ICW3 MOV AL, 11H ;ICW4 MOV AL, 0F6H ;0CW1 MOV AL, 20H ;0CW2(EOI) MOV DX, SPORT ;偶地址 OUT DX, AL

58 8259A编程及中断程序设计(9) (3)中断向量设置 采用绝对地址设置方法,程序如下: SEGMENT AT 0 0RG 40H×4
SINTR0 DW H ;IR0中断服务入口地址 DW H ORG 43H×4 SINTR3 DW 456OH ;IR3中断服务入口地址

59 PC/XT机8259A的连接 Y0 Y7 A B C G2B G2A G1 15 14 13 12 11 10 9 7 1 2 3 4 5
6 74LS138 A5 A6 A7 A8 A9 AEN’ AEN’=AEN∩IO/M。 8259A CS DB[7..0] IR[7..0] INTA A0 INT INTR RD WR IOW IOR 接8288 接CPU 接中断源 接数据线 接地址线

60 PC/AT机8259A的级联

61 PC/AT机主片8259A初始化 INTM00 EQU 020H ;主8259A端口0 INTM01 EQU 021H ;主8259A端口1
…… MOV AL, B ;ICW1:边沿触发, ;要ICW4;级联方式,要ICW3。 OUT INTM00, AL JMP SHORT $+2 ;I/O端口延时 MOV AL, B ;ICW2:设置主片的中断向量, ;起始的中断向量为08H OUT INTM01, AL JMP SHORT $+2 MOV AL, B ;ICW3:表示从8259A的INT输出 ;是连接到主片的IR2。 MOV AL, B ;ICW4:非总线缓冲,全嵌套, ;非自动中断结束(EOI)

62 PC/AT机从片8259A初始化 INTS00 EQU 0A0H ;从8259A端口0 INTS01 EQU 0A1H ;从8259A端口1
…… MOV AL, B ;ICW1边沿触发, ;要ICW4;级联方式,要ICW3。 OUT INTS00, AL JMP SHORT $+2 MOV AL, B ;ICW2:设置从片的中断向量, ;起始的中断向量为70H OUT INTS01, AL MOV AL, B ;ICW3:设置从片的识别标志, ;指定对应主片的IR2。 MOV AL, B ;ICW4:非总线缓冲,全嵌套, ;非自动中断结束。

63 PC/AT机中断请求线的连接 8259 8259输入 典型的中断源 被连接的引脚/功能 主片 内部 内部时钟/计数器0的输出 1 键盘
内部 内部时钟/计数器0的输出 1 键盘 通过SERIRQ来的IRQ1 2 从控制器的级联引脚 3 串行端口2 通过SERIRQ来的IRQ3 4 串行端口1 通过SERIRQ来的IRQ4 5 并行端口/普通 通过SERIRQ来的IRQ5 6 软磁盘 通过SERIRQ来的IRQ6 7 通过SERIRQ来的IRQ7 8259 8259输入 典型的中断源 被连接的引脚/功能 从片 内部实时时钟 内部RTC 1 普通 通过SERIRQ来的IRQ9 2 通过SERIRQ来的IRQ10 3 通过SERIRQ来的IRQ11 4 PS/2鼠标 通过SERIRQ来的IRQ12 5 内部 基于处理器FERR#的状态机输出 6 基本IDE电缆 从输入信号来或通过SERIRQ来的IRQ14 7 第二IDE电缆 从输入信号来或通过SERIRQ来的IRQ15

64 中断编程结构 …… OLD0C DD ? ; 中断处理子程序 CODE SEGMENT SERVICE PROC PUSHA ; 保护现场
MOV AX, 350CH ; 保存原来的0CH中断向量 INT 21H MOV WORD PTR OLD0C,BX MOV WORD PTR OLD0C+2,ES MOV AX, CODE ; 写入新的0CH中断向量 MOV DS,AX MOV DX,OFFSET SERVICE MOV AX,250CH …… ; 其它程序段 ; 中断处理子程序 SERVICE PROC PUSHA ; 保护现场 PUSH DS STI ; 打开中断 …… ; 串口数据处理程序 CLI ; 关闭中断 POP DS POPA ; 恢复现场 IRET SERVICE ENDP

65 7.5 8088的中断方式 8088可以处理256种不同类型的中断,类型号为0~255 8088的中断分为内部中断和外部中断两大类
的中断方式 8088可以处理256种不同类型的中断,类型号为0~255 8088的中断分为内部中断和外部中断两大类 外部中断:由CPU外部引起的中断,需要外设产生一个信号来通知CPU,包括非屏蔽中断NMI和可屏蔽中断INTR 1. 可屏蔽中断 中断请求:多个中断请求的排队和判优由中断控制器完成,产生的有无中断请求的信号送到CPU的INTR引脚。 中断类型号:通过数据总线送到CPU中。 EFLAGS寄存器的IF位影响CPU对中断请求的响应。 属性:硬件、可屏蔽、向量。 2.非屏蔽中断 中断请求:中断请求的信号送到CPU的NMI引脚。 中断类型号:固定为2。 CPU不需要进行中断识别,直接处理中断。 属性:硬件、不可屏蔽、向量。 NMI由0跳变到1以后要维持至少4个连续的处理器时钟周期的高电平才被识别。 NMI由1跳变到0以后要维持至少4个连续的处理器时钟周期的低电平,新的NMI中断才能被识别。

66 内部中断 内部中断:由CPU状态的改变或执行中断指令而产生的中断,它不受IF的控制,主要用于功能调用、程序调试和意外情况处理
属性:软件、不可屏蔽、向量。 中断请求:指令执行中或程序调用产生。 中断类型号:CPU规定或指令给出。

67 内部中断形式 内部中断包括四类:除法错中断、单步中断、溢出中断、软件中断 CPU专用中断:溢出(O)、单步(1)、断点中断(3)。
BIOS中断:I/O设备控制、实用服务、特殊中断、专用参数中断。 DOS中断:公开/未公开、可调用、系统功能。 自由中断:未定义(20H~3FH中未使用的中断)。 CPU不需要进行中断识别,直接处理中断。 失效:错误在指令完成前,错误指令的CS:EIP压栈。该指令会重做。 陷阱:错误在指令完成后,错误指令下一指令的CS:EIP压栈。 中止:不保存,重启机器。

68 内部中断与外部中断的主要区别 内部中断与外部中断的主要区别:
1.外部中断需要从数据总线上读取中断类型码,而内部中断的中断类型码是指令的一部分 2.外部中断受中断允许触发器IF的控制,而内部中断不受IF的控制 3.内部中断的优先级别比外部中断要高(除单步中断以外) 中断源的优先级别由高到低顺序:内部中断、NMI、INTR、单步中断

69 PC机中断向量表 中断向量:对应中断类型号的中断服务程序入口地址。每个中断向量占4字节。
中断向量表:中断服务程序的入口地址表,位于内存地址0000 : 0000开始的1KB范围内。按中断类型号顺序存放中断向量。 每个中断服务程序的入口地址都有2个字节的段地址和2个字节的段内偏移量共4个字节组成,共有256个中断源,所以中断向量表共占用256×4=1024字节空间,并且从存储器地址的最低端开始存放(即地址00000H~003FFH) 中断向量指针:指向存放中断服务入口地址第一字节的指针。中断向量指针=中断类型号*4。软件中断中自由中断的中断向量需用户自己装入。

70 中断向量表结构

71 8088中断处理

72 8088中断响应和处理流程

73 第7章 结束 请同学们按教材后的习题 及时复习 吉林大学远程教育学院


Download ppt "第7章 中断 中断请求 中断响应 中断服务 中断结束 中断处理"

Similar presentations


Ads by Google