第 7 章 中断与异常

70
现现现现现现现现现现现 现现现现现现现现现现现 ( ( 3 3 ) ) http://www.njyangqs.co http://www.njyangqs.co 1 第7第 第第第第第

description

第 7 章 中断与异常. 7.1 概述. 7.1.1 中断、异常、中断向量. 1. 中断与异常概念. 中断 是在程序执行过程中,为了响应从硬件发来的信号而随机产生的事件。系统硬件使用中断来处理外部事物,比如外设的请求。软件也能够通过执行 INT n 指令来产生中断。. 当处理器检测到执行一条指令时的错误,比如除 0 错、保护侵犯、缺页故障、内部机器故障等,就会产生 异常 。当内部硬件错误和总线错误被检测到时,有机器检查功能的处理器( Pentium , P6 , Pentium 4 , Core 及以后)也会产生机器检查异常。. 中断结束. 中断请求. 中断响应. - PowerPoint PPT Presentation

Transcript of 第 7 章 中断与异常

Page 1: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/1

第 7 章 中断与异常

Page 2: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/2

中断中断是在程序执行过程中,为了响应从硬件发来的信号是在程序执行过程中,为了响应从硬件发来的信号而随机产生的事件。系统硬件使用中断来处理外部事物,而随机产生的事件。系统硬件使用中断来处理外部事物,比如外设的请求。软件也能够通过执行比如外设的请求。软件也能够通过执行 INT nINT n 指令来产指令来产生中断。生中断。当处理器检测到执行一条指令时的错误,比如除当处理器检测到执行一条指令时的错误,比如除 00错、保护侵犯、缺页故障、内部机器故障等,就会错、保护侵犯、缺页故障、内部机器故障等,就会产生产生异常异常。当内部硬件错误和总线错误被检测到时。当内部硬件错误和总线错误被检测到时,有机器检查功能的处理器,有机器检查功能的处理器(( PentiumPentium ,, P6P6 ,, Pentium 4Pentium 4 ,, CoreCore 及以后)也及以后)也会产生机器检查异常。会产生机器检查异常。

7.1.1 7.1.1 中断、异常、中断向量中断、异常、中断向量7.1 概述

1.1. 中断与异常概念中断与异常概念

Page 3: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/3

中断到来的时候, CPU 暂停现行程序,转而处理随机到来的事件,待处理完后再回到被暂停的程序继续执行。

2.2. 中断大致过程:中断大致过程:

中断处理的隐操作:中断处理的隐操作:程序状态及程序断点地址的进栈及出栈。

中断请求 中断响应 中断服务 中断结束

中断处理

Page 4: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/4

3.3. 中断系统其他功能:中断系统其他功能: 支持多中断源和多种中断源。 支持中断屏蔽处理。 支持中断嵌套处理。 支持中断优先级修改。

支持中断结束方式选择。

Page 5: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/5

4.4. 中断向量号、中断向量中断向量号、中断向量为了处理异常和中断,每一个 IA-32/Intel 64 体系定义的异常和每一个需要特殊处理的中断类型都被分配了唯一的识别号,该识别号称之为中断向量号中断向量号。对每个异常或中断而言,处理器都有相应的中断处理程序,而中断向量中断向量就是中断处理程序的入口地址。

中断向量号允许的范围是中断向量号允许的范围是 0~2550~255 0~310~31 号向量被号向量被 Intel 64Intel 64 和和 IA-32IA-32 用作体系结构内部定义的异常用作体系结构内部定义的异常

和中断。和中断。 32~25532~255 号向量作为用户定义的中断,这些中断通常安排给外部号向量作为用户定义的中断,这些中断通常安排给外部

I/OI/O 设备,使这些设备能够利用外部的某一种硬件中断机制设备,使这些设备能够利用外部的某一种硬件中断机制(比如(比如 8259A8259A 中断控制器)向处理器发出中断请求。中断控制器)向处理器发出中断请求。

作为作为 INT nINT n 指令引发的软件中断,其向量号可以在指令引发的软件中断,其向量号可以在 0~2550~255 的范的范围。围。

Page 6: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/6

1.1. 外部中断外部中断7.1.2 7.1.2 中断源及中断类型 中断源及中断类型 Pentium 及以上的处理器外部中断通过处理器外部引

脚或者本地 APIC 获得PentiumPentium 之前的处理器,中断信号直接从之前的处理器,中断信号直接从 INTRINTR 和和

NMINMI 引脚引入引脚引入PentiumPentium 之后的处理器,主要的中断引脚是之后的处理器,主要的中断引脚是 LINT[1:0]LINT[1:0]

,它们连接到本地,它们连接到本地 APICAPIC• 如果处理器内本地如果处理器内本地 APICAPIC 被禁止时,被禁止时, LINT[1:0]LINT[1:0] 引脚分引脚分

别被配置为别被配置为 INTRINTR 和和 NMINMI 引脚引脚• 如果本地如果本地 APICAPIC 被使能时,被使能时, LINT[1:0]LINT[1:0] 引脚能够通过引脚能够通过

APICAPIC 的本地向量表编程去关联任一个处理器的异常和的本地向量表编程去关联任一个处理器的异常和中断向量中断向量

外部中断又可分为可屏蔽中断和不可屏蔽中断。APICAPIC 是高级可编程中断控制器,是从是高级可编程中断控制器,是从 PentiumPentium 处理器开始被引处理器开始被引入的面向多处理器及多核系统的中断控制器,由处理器中的本地入的面向多处理器及多核系统的中断控制器,由处理器中的本地APICAPIC ,, PCHPCH 中的中的 I/O APICI/O APIC 以及两者之间的连线构成。以及两者之间的连线构成。

Page 7: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/7

11 )可屏蔽中断)可屏蔽中断 (( 如键盘 、鼠标,串口,并口打印机如键盘 、鼠标,串口,并口打印机等)等)

中断请求:中断请求:多个中断请求的排队和判优由中断控制器完成,产生的中断请求信号送到 CPU 的 INTR 引脚或本地APIC 。 中断向量号:中断向量号:通过数据总线送到 CPU 中。

EFLAGS 寄存器的 IF 位影响 CPU 对中断请求的响应。处理器在当前指令执行结束的时候当前指令执行结束的时候启动中断识别 INTA总线周期。

属性:属性:硬件、可屏 蔽、向量。

SIO LPC47B27X

…IRQx PCHSERIRQ

北桥

CPUINTR

中断向量号

PIRQx

1.1. 外部中断外部中断

Page 8: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/8

22 )不可屏蔽中断)不可屏蔽中断

中断请求:中断请求:中断请求的信号送到 CPU 的 NMI 引脚或本地 APIC 。 中断向量号:中断向量号:固定为 2 。 CPU 不需要进行中断识别,直接处理中断。

属性:属性:硬件、不可屏蔽、向量。

NMI 由 0 跳变到 1 以后要维持至少 4 个连续的处理器时钟周期的高电平才被识别。

NMI 由 1 跳变到 0 以后要维持至少 4 个连续的处理器时钟周期的低电平,新的 NMI 中断才能被识别。

1.1. 外部中断外部中断

Page 9: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/9

2.2. 软件中断软件中断 属性:属性:软件、不可屏蔽、向量。 中断请求:中断请求: INT n是使用非常广泛的软件中断指令。 中断向量号:中断向量号: INT n的第二字节 n给出指令指定的中断向量号 BIOSBIOS 中断:中断: I/O 设备控制、实用服务、特殊中断、专用参数中断。 DOSDOS 中断:中断:公开 /未公开、可调用、系统功能。 自由中断:自由中断:未定义 (20H~3FH 中未使用的中断 ) 。 CPU 不需要进行中断识别,直接处理中断。

Page 10: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/10

1.1. 异常源异常源7.1.3 7.1.3 异常源及异常类型 异常源及异常类型

处理器检测到的程序错误产生的异常处理器在执行应用程序或操作系统期间检测到程序错处理器在执行应用程序或操作系统期间检测到程序错

误,会产生一个或多个异常误,会产生一个或多个异常IA-32/Intel 64IA-32/Intel 64 结构为每一个“处理器可检测”的异常结构为每一个“处理器可检测”的异常

指定了一个向量号指定了一个向量号 机器检测异常

P6P6 家族和家族和 PentiumPentium 处理器提供了内部和外部机器检测处理器提供了内部和外部机器检测机制用于检查内部芯片硬件和总线事务的操作机制用于检查内部芯片硬件和总线事务的操作

当发现机器检测错误,处理器发出一个机器检测异常当发现机器检测错误,处理器发出一个机器检测异常并返回一个错误号并返回一个错误号

Page 11: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/11

1.1. 异常源异常源 软件产生的异常

INTOINTO 是是溢出异常溢出异常指令,如果指令,如果 EFLAGS.OF=1EFLAGS.OF=1 ,同时,同时又执行又执行 INTOINTO 指令,则将产生向量号为指令,则将产生向量号为 44 的异常中断的异常中断

INT 3INT 3 是是断点异常断点异常指令,它是一条单字节指令,常被指令,它是一条单字节指令,常被放在需要放置断点的指令前面。实际上,很多调试程放在需要放置断点的指令前面。实际上,很多调试程序都是利用序都是利用 INT 3INT 3 指令来完成断点跟踪功能的指令来完成断点跟踪功能的

BOUNDBOUND 指令是指令是边界检查边界检查指令,它具有两个操作数:指令,它具有两个操作数:第一个操作数用来指定存放数组索引的寄存器;第二第一个操作数用来指定存放数组索引的寄存器;第二个操作数必须是存储器操作数,其第一个字是数组下个操作数必须是存储器操作数,其第一个字是数组下标的下限,第二个字是数组下标的上限。标的下限,第二个字是数组下标的上限。 BOUNDBOUND 指指令执行时将检查数组的索引值,若小于下限或大于上令执行时将检查数组的索引值,若小于下限或大于上限,则将发生向量号为限,则将发生向量号为 55 的异常中断的异常中断

Page 12: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/12

2.2. 异常的属性与种类异常的属性与种类 属性:属性:软件、不可屏蔽、向量。 中断请求:中断请求:指令执行中产生。 中断向量号:中断向量号: CPU规定。 故障(失效):故障(失效):错误在指令完成前错误在指令完成前,错误指令的CS : EIP压栈。该指令会重做。 陷阱:陷阱:错误在指令完成后错误在指令完成后,错误指令下一指令的CS : EIP压栈。 中止:中止:不保存,重启机器。 CPU 不需要进行中断识别,直接处理中断。

Page 13: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/13

7.2.1 8259A7.2.1 8259A 主要任务主要任务

• 接受外部的中断请求;• 管理所有外部的中断请求 ( 排队、判优、屏蔽、嵌套 );• 向 CPU 产生中断请求 INTR 信号及中断向量号;• 进行中断结束处理;• 接受 CPU命令及返回状态。

7.2 可编程中断控制器—— Intel 8259A

Page 14: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/14

1.8259A1.8259A 引脚引脚

CPUCPU侧:侧:

DB0~DB7;

外设侧:外设侧: IR0~IR7;级联:级联:

CS#;

RD# 、 WR# 、 A0;

SP#/EN# 、 CAS0~CAS2 。

INT 、 INTA#;

7.2.2 8259A7.2.2 8259A 引脚及内部结构引脚及内部结构

Page 15: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/15

2.8259A2.8259A 内部结构内部结构

Page 16: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/16

内部逻辑:内部逻辑: IRR 、 IMR 、 PR 、 ISR 及控制电路。 中断请求过程:中断请求过程: IR->INT 。

&INT

ISR 编码

中断请求优先级编码器

中断请求寄存器IR

R

IR0

IR7

……

&

&

&

&

&

&

&

&

中断屏蔽寄存器 IMR

D0 D7…

≥1

比较器

B0

B1

B2

A>BA0

A1

A2

接口电路:接口电路: CPU 接口、 I/O 接口。

Page 17: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/17

CPUCPU 响应可屏蔽中断条件:响应可屏蔽中断条件: 当前指令执行完毕; EFLAGS 中 IF=1; INTR 信号有效。

中断响应过程:中断响应过程: 8259 向 CPU 送中断向量号。 第一个 INTA# , CPU封锁总线 (LOCK# 有效 ) , 8259A最高优先级请求对应 ISR 位置位,对应IRR复位。 第二个 INTA# ,总线解锁, ALE无效, 8259A将当前中断服务程序对应中断向量号送到数据总线上。 ISR 的复位在自动结束 /非自动结束时不一致。

回ICW3

Page 18: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/18

级联方式结构:级联方式结构:

级联3

级联 1 级联2

Page 19: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/19

3.8259A3.8259A 工作方式工作方式 中断请求方式:中断请求方式:边沿触发方式边沿触发方式:正跳变向 8259A 请求中断。电平触发方式电平触发方式:高电平向 8259A 请求中断,响

应中断后要及时清除高电平。

PCPC 机初始化为边沿触发,非查询中断方式机初始化为边沿触发,非查询中断方式

查询中断方式:查询中断方式:外设向 8259A 请求中断,并将请求状态保存在状态寄存器中等待 CPU 来查询。

Page 20: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/20

连接总线与级联方式:连接总线与级联方式: 非缓冲方式:非缓冲方式:小系统中, 8259A 数据线直接连系统数据总线,不需要总线缓冲器,此时SP#/EN# 表示级联时主 / 从关系。 主片:主片: SP#/EN# 接高电平; 从片:从片: SP#/EN# 接低电平。 缓冲方式:缓冲方式:大系统中,数据总线都具有总线缓冲器,此时 SP#/EN# 表示数据传送方向,级联时主 / 从关系通过软件设定 ICW4 来决定。PCPC 机初始化为非缓冲方式机初始化为非缓冲方式

Page 21: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/21

屏蔽方式:屏蔽方式: 缺省特性:自动屏蔽低于自己优先级的缺省特性:自动屏蔽低于自己优先级的 IRIR 。。 正常屏蔽:正常屏蔽: IMR 中相应位置位; 特定屏蔽:特定屏蔽:开放比自己优先级低的 IR 。 优先级管理方式:优先级管理方式: 缺省特性:缺省特性: IRIR00~IR~IR77 的优先级为一循环队列。的优先级为一循环队列。 固定优先权:固定优先权:从 IR0~IR7降序; 轮转优先权:轮转优先权: 自动轮转:自动轮转:刚被服务的 IR 的优先级降至最低 ; 指定轮转:指定轮转:指定的 IR 的优先级降至最低。PCPC 机初始化为缺省屏蔽特性,固定优先权机初始化为缺省屏蔽特性,固定优先权

Page 22: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/22

嵌套方式:嵌套方式: 全嵌套:全嵌套:禁止同优先级和低优先级请求发生; 特殊全嵌套:特殊全嵌套:禁止低优先级请求发生。 应用:应用:级联时主片特殊全嵌套,从片全嵌套。结束方式(结束方式( ISRISR 复位方式):复位方式): 自动:自动:中断响应后 ISR 中最高优先级位自动复位; 非自动:非自动:中断服务程序返回前,需要处理程序发出对 ISR 中相应位复位的中断结束命令; 不指定方式:不指定方式: ISR 中最高优先级位复位; 指定方式:指定方式:命令中指定的 ISR 中相应位复位。

PCPC 机初始化为全嵌套,非自动结束方式机初始化为全嵌套,非自动结束方式

级联结构

Page 23: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/23

4.8259A4.8259A 的操作功能及命令的操作功能及命令 I/OI/O 端口地址:端口地址:只提供二个端口 ( 使用 A0区别 ); 命令:命令:初始化 --ICW1~ICW4 , 操 作 --OCW1~OCW3 。 状态:状态: IRR 、 ISR 、 IMR 、查询字。 I/OI/O 端口操作冲突时解决方法:端口操作冲突时解决方法: 信息字节中有空闲位时:信息字节中有空闲位时:特征位方法; 信息字节中无空闲位时:信息字节中无空闲位时:时序方法、读 /写

区分法。

Page 24: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/24

PIC1 PIC2 操作 内容 特征位 时序D4D3D2

20H 0A0H 写 ICW1 1×× 无OCW2 00×

OCW3 01×

21H 0A1H 写 ICW2~ICW4 无 在初始化期间,ICW1 之后ICW2→ICW4

OCW1 非初始化期间20H 0A0H 读 IRR , ISR

查询字无 OCW3决定

21H 0A1H 读 IMR 无 无

8259A8259A 命令关系表(地址以命令关系表(地址以 PCPC 机中为例):机中为例):

注:注: ICWx只有在初始化过程中才会出现。

Page 25: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/25

(1)(1) 初始化命令初始化命令 ICW1ICW1

特征位:特征位: D4=1; 初始化命令 ICW4 主要设定嵌套、缓冲、结束方式,缺省值为全嵌套、非缓冲、非自动结束方式缺省值为全嵌套、非缓冲、非自动结束方式。。 当 SNGL=0 ,需要初始化命令 ICW3 来设置级联项。PCHPCH芯片将内嵌的芯片将内嵌的 8259 ICW18259 ICW1 的的 D3D3 位作废位作废

Page 26: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/26

(2)(2) 初始化命令初始化命令 ICW2ICW2

时序: 时序: ICW1→ ICW2→[ICW3]→[ICW4] 。IRIRii 的中断向量号 的中断向量号 = ICW2+i= ICW2+i

例:例:如果 ICW2 为 08H ,则 IR3 的中断向量号为 08H+03H=0BH 。思考题:如果一个中断的类型号是思考题:如果一个中断的类型号是 16H16H ,请问该中断,请问该中断接在接在 IRIR几?该几?该 82598259 初始化的初始化的 ICW2ICW2 是多少?是多少?

Page 27: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/27

(3)(3) 初始化命令初始化命令 ICW3ICW3

级联方式结构设置:级联方式结构设置:

主片: S7~S0 分别对应相应的 IR 号的引脚,为 1 的位对应的引脚接有从片; 从片: ID2~ID1 的编号是该从片接到主片的 IR 引脚的 IR 号。

需要分别对主片和从片进行设置。

级联结构

Page 28: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/28

主 片: MOV AL, 14H OUT 21H , AL从片 1 : MOV AL, 04H OUT 0A1H , AL从片 2 : MOV AL, 02H OUT 0C1H , AL

级联方式中断请求及响应过程:级联方式中断请求及响应过程: 主片请求:与非级联一致。

从片请求:与非级联一致,但其 INT 送到主片,服从主片的请求规则。 从片响应:通过 CAS 线译码,选中时在收到第二个 INTA# 后,返回中断向量号。

非级联响应

级联结构

主片响应:收到第一个 INTA# 后,对从片的 IR请求,在第一个 INTA#下降沿下降沿从 CAS 线送出该 IR 编码;否则,在第二个 INTA#返回中断向量号。

Page 29: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/29

(4)(4) 初始化命令初始化命令 ICW4ICW4

DD00 ::用于 8 位 (0)/16 位 (1)微机, PCH 中此位恒为1; DD11 ::非中断自动结束 (0)/自动结束 (1) 方式;

DD22 ::缓冲方式 (D3=1) 时的主从片级联位置设置, 从片 (0)/ 主片 (1) ; DD33 ::非缓冲 (0)/缓冲 (1) 方式; DD44 ::全嵌套 (0)/ 特殊全嵌套 (1) 方式。

从片非自动结束时,主、从片均需发从片非自动结束时,主、从片均需发 EOIEOI命令。命令。

Page 30: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/30

(5)(5) 操作命令操作命令 OCW1OCW1

特征位:特征位:无,时序:时序:无。功能:功能:写中断屏蔽寄存器 IMR实际上改变了中断优先级(屏蔽掉高优先级的中断请求)。对 IMR 的读取在 21H (主)、 0A1H (从)端口做读操作。

Page 31: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/31

(6)(6) 操作命令操作命令 OCW2OCW2

特征位:特征位: D4D3=00; 功能:功能:结束方式和优先权轮转管理; 结束方式管理:结束方式管理: D6D5=×0 ,自动结束,硬件自动清除 ISR 的相应位; D6D5=01 ,非自动结束 [命令不指定清 ISR 的哪一位 ]; D6D5=11 ,非自动结束 [命令指定清 ISR 的哪一位 ] 。 优先权管理:优先权管理: D7=0 ,优先权固定; D7=1 ,优先权轮转。 D6 的含义仍然有效

Page 32: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/32

R SL EOI 0 0 L2 L1 L0 功能 0 0 0 0 0 0 0 0 自动 EOI 、优先权固定命令 0 0 1 0 0 0 0 0 非自动 EOI[ 不指定 ] 、优先权

固定命令 0 1 1 0 0 L2 L1 L0 非自动 EOI[ 指定 ] 、优先权固

定命令 1 0 0 0 0 0 0 0 自动 EOI 、优先权自动轮转命

令 1 0 1 0 0 0 0 0 非自动 EOI[ 不指定 ] 、优先权

自动轮转命令 1 1 1 0 0 L2 L1 L0 非自动 EOI[ 指定 ] 、优先权指

定轮转命令 1 1 0 0 0 L2 L1 L0 自动 EOI 、优先权指定轮转命

令 例:例: MOV AL, 20H OUT 20H , AL 的含义?

Page 33: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/33

(7)(7) 操作命令操作命令 OCW3OCW3

P RR RIS 功能 应用 1 × × 读取查询字信息 MOV AL, 0CH

OUT 20H, ALIN AL, 20H

0 1 0 读取 IRR 内容 MOV AL, 0AHOUT 20H , ALIN AL , 20H

0 1 1 读取 ISR 内容 MOV AL, 0BHOUT 20H , ALIN AL , 20H

0 0 × 不读取任何寄存器内容

特征位:特征位: D4D3=01;

Page 34: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/34

查询字格式:

I=0 ,无中断请求;I=1 ,有中断请求。W2~W0 ,正在申请中断的若干中断源中优先级最高的中断源的编码。

Page 35: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/35

特定屏蔽管理:特定屏蔽管理: ESMM SMM 功能 0 × 该操作对特定屏蔽无效 1 0 取消特定屏蔽 1 1 设置特定屏蔽设置方法:设置方法:

用 OCW1 屏蔽部分 IR[含自己 ] , 用 OCW3 置 SMM即可。 取消方法:取消方法: 用 OCW3取消特定屏蔽, 用 OCW1取消被屏蔽的 IR 。

Page 36: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/36

1.1.初始化编程步骤初始化编程步骤

out 20h(a0h), al

out 21h(a1h), al

out 21h(a1h), al

out 21h(a1h), al

7.2.3 8259A7.2.3 8259A 初始化编程初始化编程

Page 37: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/37

2.2. 初始化编程初始化编程

• 不同 8259A 的 I/O端口地址不同;• 8259A 级联时,每个 8259A均必须有完整

的初始化过程 [端口地址和部分参数不同而已 ];• 全嵌套方式时,初始 IR 优先级 IR0最高。

注意点:注意点:

Page 38: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/38

例:例:INTM00 EQU 020H ;8259A端口 0INTM01 EQU 021H ;8259A端口 1

……MOV AL, 00010011B ;ICW1 :边沿触发,要 ICW4;

;单片方式,不要 ICW3 。OUT INTM00, ALJMP SHORT $+2 ;I/O端口延时MOV AL, 00001000B ;ICW2 :设置中断向量,起始的

; 中断向量为 08H 。OUT INTM01, ALJMP SHORT $+2MOV AL, 00000001B ;ICW4 :非缓冲,全嵌套,非自

; 动中断结束 (EOI) 。OUT INTM01, ALJMP SHORT $+2……

Page 39: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/39

思考题:

MOV AL, 12HOUT 20H, ALMOV AL, 08HOUT 21H, ALMOV AL, 02HOUT 21H, AL

MOV AL, 13HOUT 20H, ALMOV AL, 08HOUT 21H, ALMOV AL, 02HOUT 21H, AL

问:以上左右两段对问:以上左右两段对 82598259 的访问程序中,的访问程序中,最后一句分别是发的什么命令?最后一句分别是发的什么命令?

Page 40: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/40

5.2.4 5.2.4 微机中微机中 8259A8259A 应用应用 (D31:F0)(D31:F0)

Y0#

Y7#

A

BC

G2B#G2A#

G1

15

14

13121110

97

123

45

6

74LS138

A5

A6

A7

A8

A9

AEN#

1.PC1.PC 机系统板上机系统板上 8259A8259A 的连接的连接

8259A

CS#

DB[7..0]

IR[7..0]

INTA#

A0 A0

INT

INTA#

INTR

RD#

WR#

IOW#

IOR# 接接 82888288总线控总线控制器制器

接接 CPUCPU

接中断源接中断源

接数据线接数据线

接地址线接地址线中断控制器中断控制器 8259A8259A 的端口地址为的端口地址为20H20H 、、 21H21H

Page 41: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/41

2.2. 现代微机中现代微机中 PCHPCH 中中 8259A8259A 级联级联

注意:注意: 主、从区分; IRQ 优先级; 请求与响应。

Page 42: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/42

3. PCH3. PCH中的中断请求中的中断请求触发方式设置触发方式设置在 PCH 中, ICW1 的 D3 位 LTIM 位无效,中断请求的触发方式由下面两个寄存器决定。ELCR1——ELCR1——主控制器边沿主控制器边沿 //电平触发寄存器(地址电平触发寄存器(地址 4D0H4D0H)) 7 6 5 4 3 2 1 0

IRQ7 IRQ6 IRQ5 IRQ4 IRQ3 0 0 0

ELCR2——ELCR2——从控制器边沿从控制器边沿 //电平触发寄存器(地址电平触发寄存器(地址 4D1H4D1H)) 7 6 5 4 3 2 1 0

IRQ15 IRQ14 0 IRQ12 IRQ11 IRQ10 IRQ9 0

IRQx=0 : IRQx 为边沿触发IRQx=1 : IRQx 为电平触发

Page 43: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/43

;; 对主片对主片 8259A8259A 的初始化的初始化INTM00 EQU 020H ; 主 8259A端口 0INTM01 EQU 021H ; 主 8259A端口 1

……MOVAL, 00010001B ;ICW1 :边沿触发,要 ICW4; 级联方式,要 ICW3 。OUT INTM00, ALJMP SHORT $+2 ;I/O端口延时MOVAL, 00001000B ;ICW2 :设置主片的中断向量,起始的中断向量为 08HOUT INTM01, ALJMP SHORT $+2MOVAL, 00000100B ;ICW3 :表示从 8259A 的 INT 输出是连接到主片的

IR2 。OUT INTM01, ALJMP SHORT $+2MOVAL, 00010001B ;ICW4 :非总线缓冲,特殊全嵌套,非自动 EOIOUT INTM01, ALJMP SHORT $+2MOV AL , 00000000B ; ELCR1 :全部边沿触发MOV DX , 4D0HOUT DX , AL……

Page 44: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/44

;; 对从片对从片 8259A8259A 的初始化的初始化INTS00 EQU 0A0H ; 从 8259A端口 0INTS01 EQU 0A1H ; 从 8259A端口 1

……MOVAL, 00010001B ;ICW1边沿触发,要 ICW4; 级联方式,要 ICW3 。OUT INTS00, ALJMP SHORT $+2MOVAL, 01110000B ;ICW2 :设置从片的中断向量,起始的中断向量为 70HOUT INTS01, ALJMP SHORT $+2MOVAL, 00000010B ;ICW3 :设置从片的识别标志,指定对应主片的 IR2 。OUT INTS01, ALJMP SHORT $+2MOVAL, 00000001B ;ICW4 :非总线缓冲,全嵌套,非自动中断结束。OUT INTS01, ALJMP SHORT $+2MOV AL , 00000000B ; ELCR2 :全部边沿触发MOV DX , 4D1HOUT DX , AL……

Page 45: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/45

4. PCH4. PCH中的中断请求中的中断请求线连接线连接

8259 引脚 中断向量号 典型的中断源 被连接的引脚 / 功能

主片 0 8H 内部 内部时钟 / 计数器 0 的输出

1 9H 键盘 通过 SERIRQ 来的 IRQ1

2 0AH 内部 从控制器的级联引脚3 0BH 串行端口 2 通过 SERIRQ 来的 IRQ3

4 0CH 串行端口 1 通过 SERIRQ 来的 IRQ4

5 0DH 并行端口 /普通

通过 SERIRQ 来的 IRQ5

6 0EH 软磁盘 通过 SERIRQ 来的 IRQ6

7 0FH 并行端口 /普通

通过 SERIRQ 来的 IRQ7返回下页

Page 46: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/46

8259 引脚 中断向量号 典型的中断源 被连接的引脚 / 功能 从片 0 70H 内部实时时钟 内部 RTC

1 71H 普通 通过 SERIRQ 来的 IRQ9

2 72H 普通 通过 SERIRQ 来的 IRQ10

3 73H 普通 通过 SERIRQ 来的 IRQ11

4 74H PS/2 鼠标 通过 SERIRQ 来的 IRQ12

5 75H 内部 基于处理器 FERR# 的状态机输出

6 76H 基本 SATA从输入信号来或通过 SERIRQ 来的 IRQ14

7 77H 第二 SATA从输入信号来或通过 SERIRQ 来的 IRQ15

SIO LPC47B27X

…IRQx PCHSERIRQ

CPUINTR

IRQ14,15返回 PCI中断转上页

Page 47: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/47

在当前指令结束后当前指令结束后,可屏蔽中断根据 EFLAGS 寄存器IF 位决定是否响应;其他中断给予响应。中断响应的步骤如下:1.1. 保护断点保护断点通过堆栈及相关硬件实现 EFLAGS 、 CS 、 EIP 的保护。并清除 IF 和 TF 。压栈的顺序是 EFLAGS 、 CS 、 EIP

2.2.取得中断向量号取得中断向量号对可屏蔽中断通过中断响应周期取得中断向量号。其他中断直接取得入口地址,无须第其他中断直接取得入口地址,无须第 22步步

7.3 现代微机中的中断处理7.3.1 7.3.1 中断响应过程中断响应过程

Page 48: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/48

4.4. 转入中断处理程序转入中断处理程序

5.5.返回断点返回断点恢复断点( EIP 、 CS 、 EFLAG顺序出栈)继续执行主程序。

3.3.取得中断服务程序入口地址取得中断服务程序入口地址对向量中断,通过中断向量号查中断向量表或中断描述符表取得中断服务程序的入口地址。

从中断处理程序入口地址转到中断处理程序。执行对中断的处理。

Page 49: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/49

PCH

北桥

CPU

PCI INTA

INTA#

中断向量号

CP

U

线

INTR主

8259A从 8259A

IRQ

内部逻辑

两个 INTA#

7.3.2 7.3.2 现代微机中断控制现代微机中断控制

Page 50: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/50

在上面的过程中有几点注意:• 一个或多个 IRQ 到来的时候,置中断请求寄存器

IRR 的相应位 。如果中断没有被屏蔽,才可以发INTR 。

• PCH 内部产生两个周期 INTA# 后,第一个第一个 INTA#INTA#脉冲脉冲,有最高优先级的 ISR 的相应位被置上,而IRR 的相应位被复位。第一个脉冲的下降沿第一个脉冲的下降沿,主中断控制器利用内部 3根专用线 CAS 向从中断控制器发送从片识别码。第二个第二个 INTA#INTA#脉冲后脉冲后,主或从识别码选中的从可编程中断控制器返回中断向量号。

• 结束中断响应周期时,如果在自动中断结束( AEOI)模式下,则中断服务寄存器( ISR )的相应位在第第二个二个 INTA#INTA#脉冲的末尾脉冲的末尾被复位,否则 ISR 相应位保持置位直到中断处理程序末尾发出 EOI命令。

Page 51: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/51

1.1. 中断识别中断识别 只有外部硬件中断需要进行识别,其余不需要识别。 中断识别由中断控制器完成。2.2. 中断优先级中断优先级 原则:原则:按机器故障、 DMA 、外围硬件、软件递减。 结果:结果:异常 >DMA> 外围硬件 >BIOS>DOS>自由。 即基本按中断向量表排序。 外围硬件一般可由用户修改其优先权。

7.3.3 7.3.3 中断识别及其优先级中断识别及其优先级

Page 52: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/52

Page 53: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/53

一、 一、 PCPC 机中断向量表机中断向量表 (IVT(IVT ,用于实地址模式,用于实地址模式 ))

1) 1) 中断向量表中断向量表

对 8088/8086 固定在内存 0000 : 0000 开始的 1KB 范围内。

按中断向量号顺序存放中断向量的存储区域。

2) 2) 中断向量指针中断向量指针指向存放中断向量地址第一字节的指针。中断向量指针中断向量指针 == 中断向量号中断向量号 ×4×4 。。软件中断中自由中断的中断向量需用户自己装入。

每个中断向量占 4字节。

7.3.4 中断向量表和实地址模式下中断处理程序的编写

对 IA-32 处理器中断向量表的基地址和界限值放在IDTR 寄存器中,并可用 LIDT 指令修改它们,为了兼容,实地址模式基地址还是 0 ,界限还是为 3FFH

Page 54: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/54

00000 类型 0 的 IP 类型 0 的 CS00004 类型 1 的 IP 类型 1 的 CS

4*N 类型 N 的 IP 类型 N 的 CS

IA-32IA-32 的中断向量表在存储区的最低的中断向量表在存储区的最低 1KB1KB字节中,字节中,对应对应 256256 种中断种中断 ,, 每个中断向量占每个中断向量占 44 个字节个字节

类型 0 的中断向量

类型 1 的中断向量

类型 N 的中断向量

类型 0 的向量指针

类型 1 的向量指针

类型 N的向量指针

Page 55: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/55

二、 实模式下中断程序编写二、 实模式下中断程序编写1. 1. 中断编程注意点中断编程注意点

11 )使用正确的中断向量号)使用正确的中断向量号 根据中断处理程序要完成的功能,选择好正确的中断向量号,如: COM1 串行通信用 0CH 号中断, Ctrl+Break 键控制中断号是 1BH ,注意定时器中断一般不使用 08H 号,而使用更安全的 1CH 号中断。 如果是自己定义的软中断,注意不要和系统中断向量号相重合。

中断编程包括主程序部分和中断处理程序部分。

Page 56: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/56

22 )中断服务程序入口地址的正确设置(主程序中完)中断服务程序入口地址的正确设置(主程序中完成)成) 有两种设置中断服务程序入口地址 ( 中断向量 ) 的方法:1 )直接写中断向量表 (假设中断向量是 0CH)CLI ; 关中断MOV AX, 0MOV ES, AX ; ES 指向 0000H 段 ( 中断向量表的段 )MOV SI, 0CH*4 ; 一个中断向量 4 个字节MOV AX, OFFSET SERVICE ; 中断入口偏移地址MOV ES:[SI], AXMOV AX, SEG SERVICE ; 中断入口的段地址MOV ES:[SI+2], AXSTI ; 开中断……; 中断处理子程序SERVICE PROC FAR……

2 )使用 DOS 功能调用中断MOV AX, SEG SERVICEMOV DS , AXMOV DX , OFFSET SERVICEMOV AX , 250CHINTINT 21H21H

2 )使用 DOS 功能调用中断MOV AX, SEG SERVICEMOV DS , AXMOV DX , OFFSET SERVICEMOV AX , 250CHINTINT 21H21H

Page 57: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/57

44 )避免)避免非软件中断非软件中断中断处理程序中中断处理程序中 DOSDOS重入重入 DOS 的重入容易引起系统瘫痪,所以在中断处理程序中要避免调用 DOS 功能调用,如果是对外设或屏幕的操作,改用 BIOS 中断,如果是文件操作,要到中断处理程序外的主程序中完成。55 )中断程序执行时间的正确估计)中断程序执行时间的正确估计 中断处理程序执行时间要小于中断到来的周期或最短间隔时间,中断处理程序里不要出现死循环、需要人工干预的人机交互和时间很长的循环语句。

33 )适当地保护现场)适当地保护现场 由于中断随时到来,所以中断处理程序中一定要保护好需要使用的寄存器。如果使用的寄存器多,可以保护所有寄存器,如果寄存器用的不多,可只将要用的寄存器压栈。

Page 58: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/58

66 )中断的打开与关闭)中断的打开与关闭 中断响应的时候系统会自动将 IF 清 0 ,如果希望中断能有限嵌套(高级与本级中断能嵌套)则在现场保护后,用 STI 指令将中断屏蔽打开。77 )中断结束处理及返回)中断结束处理及返回 a) 如果现场保护后,执行过 STI ,这恢复现场前要

执行 CLI 关闭中断。 b) 如果是外部硬件中断,非自动结束模式下,恢复

现场前应该发中断结束命令( EOI )。 MOV AL, 20HMOV AL, 20H OUT 20H, AL ; OUT 20H, AL ; 向主向主 82598259 发发 EOIEOI OUT 0A0H, AL ; OUT 0A0H, AL ; 向从向从 82598259 发发 EOIEOI c) 恢复现场,使用和保护现场压栈顺序的逆序将寄

存器的值弹出 d) 使用 IRET 中断返回指令返回

Page 59: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/59

2. 2. 中断处理程序举例(假设中断向量号是中断处理程序举例(假设中断向量号是 0CH0CH )); 主程序的相关部分…… OLD0C DD ?…….CODE …… MOV AX, 350CH ; 保存原来的 0CH 中断向量 INT 21H MOV WORD PTR OLD0C , BX MOV WORD PTR OLD0C+2 , ES MOV AX, SEG SERVICE ; 写入新的 0CH 中断向量 MOV DS , AX MOV DX , OFFSET SERVICE MOV AX , 250CH INT 21H …… ; 其它程序段

Page 60: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/60

; 中断处理子程序SERVICE PROC FAR

PUSHA ; 保护现场PUSH DSSTI ; 打开中断……; 中断处理程序主体中断处理程序主体……CLI ; 关闭中断MOV AL, 20HOUT 20H, AL ; 发中断结束命令POP DS ; 恢复现场POPAIRET

SERVICE ENDP

Page 61: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/61

1.1. 中断描述符表中断描述符表 (IDT(IDT )) 表项长度:表项长度: 8字节,每个表项对应一个中断向量号。 表项类型:表项类型:任务门、中断门、陷阱门。

通过特征位 (b40~b44)区分不同类型。

7.3.5 保护模式下中断与异常的处理

Page 62: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/62

表的长度:表的长度: 8字节 ×256=2KB 。 表的位置:表的位置:由中断描述符表寄存器 (IDTR) 指向。

2.2. 中断描述符指针中断描述符指针 指向中断描述符表中的中断描述符的指针。 中断描述符指针中断描述符指针 =IDT=IDT基地址基地址 ++ 中断向量号中断向量号 ×8×8 。。3.3. 中断门中断门 //陷阱门陷阱门 内容:内容:段选择符、属性和偏移量。 中断门与陷阱门区别:中断门与陷阱门区别: 通过中断门处理时 EFLAG 的 IF 被清 0 ,通过陷阱门处理 IF 不清 0 。 中断门的优先级比陷阱门高,是面向外部硬件中断的门,后者面向优先级低的中断。

Page 63: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/63

中断服务子程序入口地址取得:中断服务子程序入口地址取得:

……

偏移属性

选择符

中断门 /陷阱门

IDTRIDT

中断向量号7 0

×8

边界属性基地址

段描述符

CS

GDT/LDT

线性地址

中断服务子程序

代码段段基地址

偏移

EIP

CS段描述符缓冲器

中断描述符中断描述符

段描述符段描述符

……

Page 64: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/64

TSS选择符

任务门

IDTRIDT

中断向量号7 0

×8

属性段限基址

TSS描述符

TR

GDT

线性地址

TSS

基址

TR描述符缓存器

4.4. 任务门任务门 内容:内容: TSS 选择符与属性。 TSSTSS取得:取得:

优点:优点:中断任务和被中断任务完全隔离。缺点:缺点:中断响应过程耗时长。

……

……

Page 65: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/65

7.4.1 PCI7.4.1 PCI 中断请求中断请求 PCIPCI 中断线:中断线: INTA#INTA# 、 INTB# 、 INTC# 、 INTD# 。 PCIPCI 中断源:中断源: PIRQA#~PIRQD# 。 PCIPCI 中断源连接:中断源连接:通过映射到 ISA ( 8259 )中断( 3~7 , 9~12 , 14~15 )来实现。

转中断请求线

特点:特点: 当 PCI 中断被映射到一个 ISA 的 IRQ 后,该 IRQ不可再被 ISA 设备 ( 通过 SERIRQ 的中断 ) 使用。 PCI 中断可与低电平有效的非 ISA 中断共享同一 IRQ 。

7.4 PCI 中断

Page 66: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/66

实现:实现: 设备 31 的 0 号功能的 60H~63H 、 68H~6BH 的PIRQ路由控制寄存器实现 PIRQA#~PIRQH# 与 IRQ的映射关系。 PIRQ#路由控制寄存器 [8bit] 存放的是 IRQ 编码。

PCIPCI 中断请求:中断请求: PCI 中断请求必须为低电平触发方式。

不同 PIRQ# 的优先级由 IRQ决定。 同一 PIRQ# 不同设备 INT# 的优先级由安装次序决定。

多个 PIRQ# 信号线能连在同一个 IRQ 上。

PIRQA#PIRQB#PIRQC#PIRQD#

3573

60H~63H60H~63H

8259A8259AIR0

IR3

IR5

IR7

Page 67: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/67

• PCI 中断响应为单周期单周期响应。• HOST-PCI 桥自动将双中断响应周期转换成单中断响

应周期。• 其他中断响应过程与 8259A同,中断向量号通过

HOST-PCI 桥再返回给处理器。• 中断响应周期中可插入等待周期。• 中断服务程序入口地址由中断描述符表或中断向量表管理。

7.4.2 PCI7.4.2 PCI 中断响应周期中断响应周期

Page 68: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/68

PCI 中断响应周期

CLK

FRAME#

1 2 3 4 5

AD

C/BE#

IRDY#

TRDY#

无效 向量

0000 BE#s ( 1110)

DEVSEL #

地址期没有地址,隐含的目标设备是系统中断控制器。一般它地址期没有地址,隐含的目标设备是系统中断控制器。一般它负责驱动负责驱动 DEVSEL#DEVSEL# ,也可由,也可由 PCI-ISAPCI-ISA 桥进行负向译码。桥进行负向译码。

Page 69: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/69

• PCI 中断请求信号为漏极开路的。

即:中断向量表中中断向量为同一 PIRQ# 中最后安装的设备的中断服务程序入口地址。

• 同一 PIRQ# 不同设备的优先级最后安装的最高。

• PCI 中断的状态位通过中断服务程序读取,并处理。 同一同一 PIRQ#PIRQ# 中断服务实现方法:中断服务实现方法: 采用链表式处理方法。 方法:方法: PNP 配置时将同一 PIRQ# 的原中断向量存放到其设备驱动的特定寄存器后才替换为新的中断向量。

中断向量(描述符)

中断处理程序设备 2

中断处理程序设备 1

^

PIRQA#

7.4.3 PCI7.4.3 PCI 中断共享中断共享

Page 70: 第 7 章  中断与异常

现代微机原理与接口技术现代微机原理与接口技术 (( 第第 33版版 ))

http://www.njyangqs.com/http://www.njyangqs.com/70

补充作业练习看下图完成以下题目:

Y0#

Y7#

A

BC

G2B#

G2A#

G1

1514

13121110

97

123

4

5

6

74LS138

A5

A6

A7

A8

A3

AEN#

8259A

CS#

DB[7..0]

IR5

INTA#

A0 A0

INT

INTA#

INTR

RD#

WR#

IOW#

IOR#

希望该 8259采用电平触发,起始中断向量号是 16 ,总线缓冲方式,全嵌套,非自动 EOI 。现在要求当 IR5 中断到来的时候,将变量 COME+1 ,当 COME=100 时,程序退出(注意中断向量要恢复)。要求编写与中断相关的程序和中断处理程序。

接信号源A9

A4A2

≥1

≥1