940 likes | 1.14k Views
接口技术. 第五章 中断技术. 5.1 中断的基本概念 5.2 中断处理过程 5.3 可编程中断控制器 8259 5.4 8259 在微机系统中的应用. 5.1 中断的基本概念. 一、中断的概念 中断:指 CPU 正常运行程序,由于内外部事件引 起 CPU 暂时终止正在运行的程序,转去执行请求中 断的服务程序 , 服务完毕,返回原程序的过程。 用途 使 CPU 和外设同步工作 提高 CPU 的效率. 二、中断源与中断识别 1 、中断源: 发出中断请求的外部设备或引起中断的内部原因称为中断源 2 、中断源的种类:
E N D
第五章 中断技术 5.1中断的基本概念 5.2 中断处理过程 5.3 可编程中断控制器 8259 5.4 8259在微机系统中的应用
5.1中断的基本概念 一、中断的概念 • 中断:指CPU正常运行程序,由于内外部事件引 起CPU暂时终止正在运行的程序,转去执行请求中 断的服务程序,服务完毕,返回原程序的过程。 • 用途 使CPU和外设同步工作 提高CPU的效率
二、中断源与中断识别 1、中断源: 发出中断请求的外部设备或引起中断的内部原因称为中断源 2、中断源的种类: ①外设中断:系统外部设备要求与CPU交换信息而产生的中断。 ②指令中断:为了方便用户使用系统资源或调试软件而设置的中断指令,如调用I/O设备的BIOS及DOS系统功能的中断指令和设置断点中断等。 ③程序性中断:程序员的疏忽或算法上的差错,使程序在运行过程中出现多种错误而产生的中断。 ④硬件故障中断:机器在运行过程中,硬件出现偶然性或固定性的错误而引起的中断,如奇偶校验错中断、电源故障等。
3、中断识别: (1)什么是中断识别:CPU响应中断后,设法寻找中断源,即找到是哪一个中断源发出的中断请求,这就是所谓的中断识别。 (2)中断识别的目的:是将该中断源的中断服务程序的人口地址置入CS:IP寄存器,从而实现程序的转移。
CPU识别中断或获取中断服务程序人口地址的方法有CPU识别中断或获取中断服务程序人口地址的方法有 两种:向量中断和查询中断。 ①向量中断;是由中断向量来指示中断服务程序的入口地址。 ②查询中断:是采用软件或硬件(串行顺序链电路)查询技术来确定发出中断请求的中断源。
三、中断向量、中断向量号与中断向量表 1、什么是中断向量: 中断向量是中断服务程序的人口地址。它包括中断服务程序的段基址CS和偏移地址IP(共占4个字节地址)。 2、什么是中断向量号: 是系统分给每个中断源的代号。系统中的外部中断和内部中断,硬中断和软中断一律统一编号,共有256个号,其中有一部分中断号已经分配给了中断源,尚有部分中断号空着,待分配 。
3、中断向量表:每一个中断服务程序都有一个确3、中断向量表:每一个中断服务程序都有一个确 定的人口地址,把系统中所有的中断向量集中放到 存储器的某一区域内,这个存放中断向量的存储区 就叫中断向量表或中断服务程序入口地址表。
PC系列微机的存储器的0000—03FFH共1024个地址作为中断向量存储区,每个中断向量需占用4个字节的地址空间,所以,可容纳256个中断向量,即可处理256个中断服务程序。(P80 表5.1) • 专用中断5个(0~4),系统保留27个(5~31) 其余的原则上可由用户使用(避开已使用如21H, 20H~3FH为DOS使用 )
4、中断向量号与中断向量表的关系: 中断向量=中断类型号×4开始的连续4个内存单元(也就是中断服务程序入口地址)。 关系见下图: 寄存器 CSH CSL IPH IPL 中断向量指针 004FH 004EH 004DH 004CH 中断向量 00 70 0F C9 中断类型号为13H CS=0070H IP=0FC9H
例:某中断的中断类型码为68H,其操作过程如下例:某中断的中断类型码为68H,其操作过程如下 0:19CH 类型67H 中断向量 2 INT 68H MOV AX,0 IP 0:1A0H 50 20 0:1A2H 00 A0 2050 1 5 3 CS A000 4 向量地址 =68*4 =1A0H 中断服务入口 A000:2050 STI RETI 0:1A4H 类型69H 中断向量
四、中断向量的装入(填写)与修改 中断向量并非常驻内存,而是开机上电时,由程序 装人内存指定的中断向量表中。系统配置和使用的 中断所对应的中断向量由系统软件负责装入,用户 使用的中断其中断向量由用户自己装入。
例1:用指令设置。例如,假设中断类型号为60H,中断服务程序的段基址是SEG_INTR,偏移地址是OFFSET_INTR(006DH),则填写中断向量表的程序段为:例1:用指令设置。例如,假设中断类型号为60H,中断服务程序的段基址是SEG_INTR,偏移地址是OFFSET_INTR(006DH),则填写中断向量表的程序段为:
CLI ;关中断 CLD ;内存地址加1操作 MOV AX,0 MOV ES,AX ;ES赋值为0 MOV DI,4*60H ;中断向量指针入DI MOV AX,OFFSET_INTR ;中断服务程序偏移值入AX STOSW MOV AX,SEG_INTR ;中断服务程序的段基址入AX STOSW STI ;开中断
例2:将中断服务程序的人口地址直接写入中断向量表;例2:将中断服务程序的人口地址直接写入中断向量表; MOV AX,00H MOV ES,AX MOV BX,60H*4 ;中断号*4入BX MOV AX,006DH ;中断服务程序偏移地址入AX MOV ES:[BX],AX ;装入偏移地址 PUSH CS POP AX ;获取中断服务程序段基址 MOV ES:[BX+2],AX ;装入段基址
例3:利用DOS功能调用INT21 的35号和25号功能对中断向量进行修改。步骤入下 ①用35H号功能,获取原中断向量,并保存在字变量中。 ②用25H号功能,设置新中断向量,取代原中断向量,以便当中断发生后,转移到新中断服务程序中去。 ③新中断服务程序完毕后,利用25H号功能恢复原中断向量。
假设原中断程序的中断号为n,新中断程序的入口地址的段基址为SEG_INTR,偏移地址为OFFSET_INTR。中断向量修改的程序段为:假设原中断程序的中断号为n,新中断程序的入口地址的段基址为SEG_INTR,偏移地址为OFFSET_INTR。中断向量修改的程序段为:
MOV AH,35H ;取原中断向量 MOV AL,n INT 21H MOV DX,ES MOV OLD_SEG,DX ;保存原中断向量 MOV OLD_OFF,BX MOV AH,25H ;设置新中断向量 MOV AL,n ;中断号入AL MOV DX,SEG_INTR MOV DS,DX ;DS指向新中断程序段址
MOV DX,OFFSET_INTR ;DX指向新中断程序偏移 ;地址 INT 21H MOV AH,25H ;恢复原中断向量 MOV AL,n MOV DX,OLD_SEG MOV DS,DX MOV DX,OLD_OFF INT 21H
五、中断优先级排队方式排队的方式有:a.按优先级排队。根据任务的轻重缓急,给每个中断源指定CPU向应的优先级,任务紧急的先响应,可以暂缓的后响应。b、循环轮流排队。不分级别,CPU轮流响应各个中断源。五、中断优先级排队方式排队的方式有:a.按优先级排队。根据任务的轻重缓急,给每个中断源指定CPU向应的优先级,任务紧急的先响应,可以暂缓的后响应。b、循环轮流排队。不分级别,CPU轮流响应各个中断源。
中断优先级的确定 在微机系统中通常用三种方法来确定中断源的优先级别,即软件查询法、硬件排队电路法和专用中断控制芯片法。
1) 软件查询法 AB 译码 查询次序为优先级次序 中断 状态 位 DB CPU INT
对于图7.13所示电路,设中断寄存器端口号为n,则软件查询的程序段如下: 对于图7.13所示电路,设中断寄存器端口号为n,则软件查询的程序段如下: • IN AL,n • TEST AL,80H ;1号外设有请求? • JNZ II1 ;有,转1号中断服务程序 • TEST AL,40H ;2号外设有请求? • JNZ II2 ;有,转2号中断服务程序 …
2) 硬件排队电路 采用硬件排队电路法,各个外设的优先级与其接口在排队电路中的位置有关。常用的硬件优先权排队电路有链式优先权排队电路、硬件优先级编码加比较器的排队电路等。
六、中断嵌套 当CPU正在响应较低级的中断服务过程中,如果有更高级的中断申请,CPU将停止当前的中断服务程序,而转去响应高级中断,当高级中断结束后,再返回到低级中断继续服务,服务结束后再返回到断点处继续执行。
多重中断和单级中断的区别: • 加入屏蔽本级或较低级中断请求环节 • 在中断服务之前要开中 • 在中断服务结束后,为使现场不受干扰,必须关中 • 现场恢复,重新开放中断
5.2 IBM-PC机中断系统 非屏蔽中断请求 NMI 可屏蔽中断 中断逻辑 8259A INT N指令 INTO指令 除法指令 单步TF=1
一、中断的分类 • 外部中断 由外部引脚输入信号引起中断 非屏蔽中断:不受IF标志影响 可屏蔽中断:受IF标志影响 • 内部中断 由于CPU本身启动的中断或执行中断指令引起
可屏蔽中断 • 采用电平触发,高电平有效 • 受CPU内部中断请求标志IF影响 • 由中断管理芯片8259驱动 • 中断类型码获得是在接受到CPU中断响应信 号后,由8259A送出(扩展一片8259A,可 外接8个中断源)
非屏蔽中断 • 非屏蔽中断用于处理掉电,存储器读、写错误等灾难性事件 • 不受CPU内部IF标志影响,优先级高于可屏蔽中断 • 边沿触发 • 中断类型码为2,不需要中断响应周期
内部中断 由中断指令 INT 引起(ROM-BIOS,DOS) INT N ;N为中断类型号 由CPU的某些运行错误引起中断 * 除法出错中断: 执行DIV,IDIV指令,除数为0,商 超过范围,产生0型中断 * 溢出中断; 算术运算过程中,结果溢出(OF=1), 且执行INTO指令,产生4型中断 由调试程序DEBUG设置中断 *单步中断 : 当TF=1,8086处单步方式,每执行一条 指令,产生1型中断 *断点中断: 断点中断是单字节,中断类型码是3
内部中断的特点: • 中断类型码或由指令规定,或是预定 • 不执行INTA总线周期 • 除单步中断外,内部中断无法用软件禁止 • 除单步中断外,内部中断比外部中断具有更高优先级
对CPU来说,如果这三种中断同时发生 内部中断(除单步中断)(高) 不可屏蔽中断 可屏蔽中断 单步中断 (低)
二、硬中断与软中断的比较 1、硬中断的特点 • 外部事件引起 • 中断响应周期,CPU 发INTA中断回答信号 • 中断号由中断控制器提供 • INTR 是可屏蔽 2、软中断的特点 • 执行中断指令产生,中断号是事先规定 • 中断响应周期,CPU 不发INTA中断回答信号 • 是不可屏蔽(单步除外)
三、中断处理过程 中断处理过程组成: • 中断请求 • 中断响应 • 保护现场 • 中断服务 • 恢复现场 • 中断返回
N 中断响应流程: 执行指令 指令结束? 有中断请求? 响应中断 关中断 保护断点 寻找中断源 转中断服务程序 保护现场 中断服务 恢复现场 开中断 返回 取下一条指令 Y Y
(1)接口逻辑电路使系统总线上的中断请求线出现有效信号,即有中断请求。(1)接口逻辑电路使系统总线上的中断请求线出现有效信号,即有中断请求。 (2)中断控制器 (如8259)接收这一请求信号,并与其他可能同时到来或正挂起等待处理的中断请求一起进行优先级比较。 (3)如果只有这一个请求信号,或者该信号是在刚处理的最高级的中断请求服务结束时挂起的次高级的请求信号,那么这个中断请求就能被送往CPU。
(4)接着CPU发出两个 /INTA中断响应脉冲到中断控制器: 第一个脉冲时,CPU输出/LOCK信号使总线封锁,防止DMA和其他微处理器占用总线;同时8259保留优先级,并把这个优先级别送到服务锁存器 第二个/INTA脉冲时,总线封锁解除;同时要求中断控制器送出一个8位的指针值(中断向量)。
(5)CPU接收到这个8位中断向量值。根据该值可找到低地址存储区表,这个表包含有对应中断服务子程序的段地址和偏移值。(5)CPU接收到这个8位中断向量值。根据该值可找到低地址存储区表,这个表包含有对应中断服务子程序的段地址和偏移值。 (6) CPU把当前的偏移地址、代码段地址和标志推入系统堆栈, 叫保护现场。然后从中断向量表中取出新的偏移和代码段值分别送给IP和CS。这时,中断服务程序尚可执行。 (7)中断执行完毕,恢复现场(即把入栈的内容出栈)返回断点处。整个过程结束。
5.3 可编程中断控制器 8259 • 8259的功能 • 8259的外部特性和内部结构 • 8259的工作方式
一、8259的功能 优先级排队管理 接受和扩充外部设备的中断请求 提供中断类型号 进行中断请求的屏蔽和开放
二、 8259的外部特性和内部结构 INTA INT 数据总线缓冲器 D0~D7 控制逻辑 内部总线 RD 读/写 逻辑 IR0 WR 正在 服务 寄存器ISR 优先权分析器 PR 中断 请求 寄存器 IRR A0 CS IR7 CAS0 CAS1 CAS2 级联 缓冲/ 比较器 中断屏蔽寄存器 IMR SP/EN
引脚 P 91 和CPU连接 D0~D7 A0 CS WR RD INT INTA 和级联有关 CAS0~CAS2 SP/EN 和外设请求信号有关 IR0~IR7
8259A芯片内部结构主要由8部分组成,它们分别是:8259A芯片内部结构主要由8部分组成,它们分别是: (1)数据总线缓冲器 数据总线缓冲器用来传输从8259A内部读出到CPU的数据 (状态信息)或者CPU向8259A内部写入的数据(控制字)。 (2)中断请求寄存器IRR 它是一个8位寄存器,每一位对应一个I/O设备,用来记录 发生中断请求的外设。当某一外设(I/O设备)发生中断请 求信号IRQ时,对应位被置1。
(3)中断服务寄存器ISR 它是一个8位寄存器,每一位同样对应一个I/O设备,用来 记录正被CPU服务的那个I/O设备。 (4)中断屏蔽寄存器IMR 它是一个8位寄存器,每一位对应一个I/O设备,当某一位 被置为1时,对应的I/O设备发来的中断请求信号就被屏蔽 掉 (视为无效);当某一位置为0时,对应I/O设备发来的 中断请求信号有效(允许引起中断)。 IMR中各位的值由软件进行设置,这点与IRR和ISR不同。
(5)选优电路 选优电路的作用:从中断请求寄存器IRR中选出优先权最高的那一位,并将其送到ISR中的对应位中。在中断请求寄存器IRR中,如果有多个I/O设备发出中断请求信号使多个位被置为1,则在中断响应期间,8259A接收到第一个中断响应信号INTA时,优选电路负责将中断请求寄存器IRR中优先权最高的那一位1送入中断服务寄存器ISR中对应位。
(6)读写逻辑电路 它负责把CPU发来的各种命令字写入到8259A内部 寄存器中,或者把8259A内部寄存器值,也称状态 信息读出给CPU。