42
第第第 第第 第第第 7.1 第第第第第第第 7.2 第第第第第*7.3 第第第第*7.4 第 第 第 第 7.5 第第第第第第第第 8259A 7.6 第第第第第第第第第第 7.7 CPU 第第第第第第第

第七章 中 断

  • Upload
    livvy

  • View
    131

  • Download
    0

Embed Size (px)

DESCRIPTION

第七章 中 断. 7.1 中断与异常中断 7.2 向量中断系统 * 7.3 多任务系统 * 7.4 任 务 转 换 7.5 可编程中断控制器 8259A 7.6 中断向量表的建立方法 7.7 CPU 的中断处理顺序. 7.1 中断与异常中断. 1. 中断的概念 中断 (中断 / 异常) 中断源 中断请求 中断响应 中断处理 中断返回 2. 中断分类 按中断源的性质可以把中断分类 :. (1). 外部硬件中断 : 中断源是外部硬电路。通过 CPU 的 NMI 引脚或 INTR 引脚向 CPU 提出中断请求。 - PowerPoint PPT Presentation

Citation preview

Page 1: 第七章   中  断

第七章 中断  

第七章 中 断

7.1 中断与异常中断7.2 向量中断系统*7.3 多任务系统*7.4 任 务 转 换7.5 可编程中断控制器8259A7.6 中断向量表的建立方法7.7 CPU的中断处理顺序

Page 2: 第七章   中  断

第七章 中断  7.1 中断与异常中断

1. 中断的概念中断 (中断 / 异常)中断源 中断请求 中断响应 中断处理 中断返回2. 中断分类按中断源的性质可以把中断分类 :

Page 3: 第七章   中  断

第七章 中断  (1). 外部硬件中断:

中断源是外部硬电路。通过 CPU 的 NMI 引脚或 INTR引脚向 CPU 提出中断请求。INTR: 可屏蔽中断,受 CPU 内标志寄存器中 IF 位的屏蔽 NMI: 非屏蔽中断,不受 IF 位的屏蔽。CPU 每执行完一条指令,检测 NMI 和 INTR 引脚上有无中断请求。(2). 内部异常中断: 中断源是 CPU 内部正在执行的过程发生的异常情况。如除法操作时结果太大 ( 分母太小 ) ;访问某个页或段时,该页或段正好不在内存;系统的硬件 、软件 ( 各种系统用表 ) 发生错误。

Page 4: 第七章   中  断

第七章 中断  

3. 中断优先顺序 CPU 的中断优先权排列从高到低为: ( 1 )除法出错中断,溢出中断, INT n,… ( 2 ) NMI ( 3 ) INTR ( 4 )单步中断 4. 中断类型码中断类型码是连接中断源和中断处理程序的唯一桥

梁。 80X86 可处理 256 级中断,中断类型码可以是0 ~ 255 ,一部分由系统占用,一部分用户可以支配。

比如:除法错误( n=0 ) 调试异常( n=1 ) NMI 中断( n=2 ) 断点中断( n=3 ) 溢出中断( n=4 ) ……

Page 5: 第七章   中  断

第七章 中断  5. 中断处理顺序

Page 6: 第七章   中  断

第七章 中断  

  6. 中断向量表和中断描述符表

每个中断都分配有中断类型码, CPU 通过中断类型码经过处理要找到对应的中断服务程序的入口地址。

. 实模式: 由中断向量表将中断类型码和中断服务 程的入口地址联系起来;. 保护模式:是由中断描述符表来对二者进行联系。

Page 7: 第七章   中  断

第七章 中断  实模式下几个重要概念:

. 中断向量表 : 设置在系统 RAM 的最低端 00000H~ 003FFH 的 1K 字节内,表中共有 256 个中断类型码对应的向量值。( 256*4=1K ). 中断向量 : 每个向量占用 4 个字节,称为中断向量。前 2 个字节为中断服务程序入口地址的偏移地址 IP ,后 2 个字节为服务程序的段基址 CS 。. 向量地址 : 这 4 个单元的地址中的最小地址称为向量地址。规定:中断向量表中各向量等长,且处理程序入口地址在向量表中按中断源的类型码排序。重要公式: 向量地址 = 向量表的首地址 + 中断类型码 *4讨论 : 已知中断类型码 n, 如何得到中断服务程序入口 地址 ?

Page 8: 第七章   中  断

第七章 中断  保护模式:

. 中断描述符表( IDT ):在内存中的首地址保存在 CPU 内部的 IDTR 系统寄存器中。

.CPU 响应中断过程中, CPU 把中断类型码乘以 8 ,与IDTR 中的基地址相加,指示中断描述符表中的某一中断门或陷阱门 (8 个字节组成 ) 。

.CPU 将门描述符中的选择符送 CS 寄存器,并根据选择符中 TI 位从 LDT 或 GDT 中选择一个段描述符,送入 CS 的段描述符寄存器中。

. 由段描述符中的基地址和门描述符中的偏移地址确定中断服务程序的入口地址。

Page 9: 第七章   中  断

第七章 中断  

Page 10: 第七章   中  断

第七章 中断  7.6 中断向量表的建立方法

7.6.1 绝对地址置入法AT 指定段地址 (16 位 ) , ORG指定偏移地址 , 用 DD伪指令将中断服务程序的首地址装入。INTTBL SEGMENT AT 0 ORG n*4 DD INT_VCEINTTBL ENDS ……MCODE SEGMENT ;主程序 ……INT_VCE PROC FAR ;中断服务程序 …… IRET

Page 11: 第七章   中  断

第七章 中断  

7.6.2 使用串指令装入法

ES 设定为 0 , DI 中设定为 n*4 ,使用 STOSW指令、即可完成中断服务程序首地址的装入。 CLI ;禁止中断 MOV AX , 0 MOV ES , AX ;置向量表段地址 MOV DI , n*4H ;置向量表偏移地址 MOV AX , OFFSET INT_VCE;中断服务程序偏移地址 CLD STOSW MOV AX , SEG INTV_CE ;中断服务程序段地址 STOSW STI

Page 12: 第七章   中  断

第七章 中断  7.6.3 使用 DOS 调用法

利用 DOS 中断 21H 以及专门为更新中断服务程序地址的 25H号功能来设置中断地址。

使用 25H功能时要求: AL= 中断类型号, DS∶DX=中断服务程序首地址的段、偏移地址。 PUSH DS ;保存当前数据段 MOV DX , SEG INT60H MOV DS , DX MOV DX , OFFSET INT60H MOV AL, 60H ;设中断类型号为 60H MOV AH , 25H INT 21H POP DS

Page 13: 第七章   中  断

第七章 中断  7.6.4 直接接入法

例:外设的中断类型号为 6BH ,则对应的中断向量表地址为从 001ACH开始的 4 个存储单元。

设中断服务程序段地址在 1000H ,偏移地址为 2000H 。…… XOR AX , AX MOV DS , AX ;指向 0 段 MOV AX , 2000H MOV WORD PTR [01ACH],AX ;置偏移地址 MOV AX , 1000H MOV WORD PTR [01ACH+2],AX ;置段地址 ……

Page 14: 第七章   中  断

第七章 中断  7.5 可编程中断控制器 8259A

7.5.1 8259A 的内部结构及管脚分配

Page 15: 第七章   中  断

第七章 中断  

特点:可编程、八级向量优先中断、级连、优先权动态

地改变。

1. 中断请求寄存器 (IRR)

中断请求 IR7-IR0,当某个为高电平时, IRR 相应位置“ 1”。

2. 中断服务寄存器 (ISR)

任何一级中断被响应,执行其中断服务程序, ISR 相应位置“ 1” 。多重中断情况下, ISR 中多位被同时置“ 1”。

3. 优先权判别器 (PR)

当 IR7-IR0 中有多个中断请求信号同时产生时, PR判定哪个中断请求具有最高优先权,并把它置入 ISR 的相应位。

Page 16: 第七章   中  断

第七章 中断  4 . 中断屏蔽寄存器 (IMR)

通过 IMR 可实现对各级中断的有选择的屏蔽。

Page 17: 第七章   中  断

第七章 中断  

5. 级联(中断最多扩展到 64 级)

一片 8259A只能接收 8 级中断,当超过 8 级时,可用多片 8259A 级联使用,构成主从关系。

连线要求:

.主 8259A: 级联信号 CAS2-CAS0 是输出信号; SP 端为“ 1”

. 从 8259A: 级联信号 CAS2-CAS0 是输入信号; SP 端为“ 0”

. 从 8259A 的 INT输出接到主的中断输入端 IR 上

Page 18: 第七章   中  断

第七章 中断  

例子: 3片级联

Page 19: 第七章   中  断

第七章 中断  

6.控制电路

根据 IRR 的置位情况和优先权判别器 PR 的判定结果,向 8259A 内部其它部件发出控制信号,并向 CPU 发出中断请求 INT 和接收来自 CPU 的中断响应 INTA 。

7.读 /写控制逻辑

A0 :8259A 占两个 I/O端口地址,用 A0 来选

: 端口地址的其它高位由片选信号端输入。

:读信号 :写信号

8.数据总线缓冲器

双向 8 位三态缓冲器,构成 8259A 与 CPU之间的数据接口。

Page 20: 第七章   中  断

第七章 中断  

二、 8259A 的管脚分配

4 类:

. 与外部设备连接的中断请求输入管脚 IR0-IR7 ;

. 与 CPU 连接的数据通路和控制信号: D0-D7,WR ,RD,INTA,INT ;

. 用于 8259A 级联的管脚 CAS0-CAS2,SP/EN ;

. 端口地址选择信号 CS,A0 。

Page 21: 第七章   中  断

第七章 中断  

7.5.2 8259A 的中断管理方式

一、中断优先权管理 (4 种 )1. 完全嵌套方式固定优先权 :IR0>IR1>…>IR7 。高优先级的中断可进入低优先级,但低优先级不能进入高优称级或同等优先级。2.自动循环方式IR0-IR7轮流具有最高优先权。当任何一级中断被处理完,它的优先级别就被改变为最低,而最高优先级分配给该中断的下一级中断。

Page 22: 第七章   中  断

第七章 中断  

3. 中断屏蔽方式.普通屏蔽 : 在中断屏蔽寄存器 IMR 中,将某一位或几位置“ 1”来屏蔽掉相应级别的中断请求。.特殊屏蔽 : 可使低优先级别的中断进入正在服务的高优先级别中。4.特殊完全嵌套方式 ( 用于级联情况 )接在主片 IR3 上的从片比接在 IR4 上的从片具有高的优先权;而主片上 IR0,IR1,IR2 上的中断比从片具有高优先权。二、 8259A 中断结束的管理方式中断结束的管理就是用不同的方式使 ISR 的相应位清“ 0”,并确定下面的优先排队。. 完全嵌套情况 .自动循环情况 .特殊完全嵌套情况

Page 23: 第七章   中  断

第七章 中断  

7.5.3 8259A 的编程初始化 : 第一部分称预置命令字 ICW1-ICW4 。预置命令字是要按规定顺序写入 8259A 中的。预置命令字功能:. ICW1:8259A 是单一式还是主从式;. ICW2: 设置 8 个中断请求设备的类型号;. ICW3:若为主从式则规定主 8259A 中每个 IR 端是否带从 8259A ,从 8259A则要规定从主 8259A 的哪个 IR 端引入;. ICW4: 完成中断管理方式的设定。

Page 24: 第七章   中  断

第七章 中断  

不是任何情况下都需要设置 4 个预命令,可根据 8259A 的使用情况而定。

第二部分称操作命令字 OCW1-OCW3 , 8259A 通过 ICW1-ICW4初始化后,任何时间写入 OCW1-OCW3 ,且无需按顺序写。

Page 25: 第七章   中  断

第七章 中断   一、预置命令字

1.ICW1 的格式

D1=1 ,使用单片 8259A ;

D1=0 , 8259A 级联。

D3=1, 电平触发方式;

D3=0,边缘触发方式。

Page 26: 第七章   中  断

第七章 中断  

中断类型号的高 5 位由用户指定,低 3 位由 8259A 的中断请求输入端 IR7-IR0 的编码决定。中断类型码是连续的。

在 ICW2 中,用户指定高 5 位后,当 8259A 的某个 IR 端有中断请求,就自动填入相应 IR 的编码到 ICW2 的低 3 位。

2.ICW2: 提供中断类型号

Page 27: 第七章   中  断

第七章 中断  3.ICW3

只有在 8259A 有级联的情况下使用,主片和从片的 ICW3格式不同,主片的 ICW3 表明主 8259A 的哪个 IR端接有从 8259A 。从片的 ICW3 表明它接在主 8259A的哪个 IR 端。

主 8259A 的 ICW3格式为:

每位对应一个相应的 IR 端,若某个 IR 上接有从 8259A ,则该位为 1 ,否则为 0 。

Page 28: 第七章   中  断

第七章 中断  从 8259A 的 ICW3格式为:

ID2-ID0 为该从 8259A 接入主 8259A 的 IR 端的编码。

Page 29: 第七章   中  断

第七章 中断  

4.ICW4 的格式

.AEOI: 定义是否采用自动中断结束方式。 D1=1 为自动EOI , D1=0 为正常 EOI 。

.SFNM:D4=1 为特殊完全嵌套方式, D4=0 为 非特殊完全嵌套方式。

.BUF及M/S : 0X—非缓冲方式; 10—缓冲方式从片;

11—缓冲方式主片。

Page 30: 第七章   中  断

第七章 中断  二、操作命令字

1.OCW1 的格式实现屏蔽功能, OCW1 的内容被置入中断屏蔽寄存器 IMR 中, Di 为“ 1”:禁止对应的 IR 端的中断请求 . Di 为“ 0”:允许对应的 IR 端的中断请求 .

OCW1 的格式如下:

Page 31: 第七章   中  断

第七章 中断  2.OCW2 的格式

控制中断结束,优先权循环等操作。

L2-L0 :编码指定相应的 IR 端为当前结束中断。R SL EOI 功能0 0 1 一般 EOI命令0 1 1 特殊 EOI命令1 0 1 自动循环的一般 EOI命令1 0 0 设置自动循环 AEOI方式0 0 0 清除自动循环 AEOI方式1 1 1 自动循环特殊 EOI命令1 1 0 置位优先权命令0 1 0 无效

Page 32: 第七章   中  断

第七章 中断  3.OCW3 的格式

控制 8259A 的中断屏蔽和读取寄存器的状态。

.ESMM及 SMM : 0X-无用; 10- 清除特殊屏蔽;

11-设置特殊屏蔽

.P=1 ,查询中断; P=0 ,非查询中断;

.RR及 RIS : 0X-无用; 10- 随后读 IRR ;

11- 随后读 ISR

Page 33: 第七章   中  断

第七章 中断  例 7.1 在某个 8086 最小方式系统中接有一片 8259A ,

有一外设中断请求从 IR7 引入, 8259A 的端口地址及外设申请中断的中断类型号由图给出,试写出 8259A的初始化程序。

Page 34: 第七章   中  断

第七章 中断  端口地址分析:

中断类型号分析:

初始化程序:INTRRUP SEGMENT AT 0

ORG 0C7H*4

DD INTC7

INTRRUP ENDS

INTC7 ……

……

MAIN SEGMENT

……

CLI ;关中断

MOV AL , 13H ;ICW1

OUT 84H , AL

MOV AL , 0C7H ;ICW2

OUT 86H , AL

MOV AL , 01 ;ICW4

OUT 86H , AL

STI ;开中断

MAIN ENDS

Page 35: 第七章   中  断

第七章 中断  

例 7.2 8259A 的级联使用。某系统有两片 8259A ,

. 从片 8259A 接主片的 IR4 ,主片的 IR2 和 IR5 有外部中断引入,从片 IR0 和 IR3 上也分别有外设中断引入。

.主片中断类型号分别为 62H , 65H ,中断服务程序在同一段中,段地址为 2000H ,两个中断服务的偏移地址为 2500H 和 2600H 。

. 从片中断类型号分别为 40H , 43H ,中断服务程序也在同一段中,段地址为 4000H ,偏移地址为 2640H 和4620H,

试分别写出主 8259A 和从 8259A 的初始化程序。

级联图

Page 36: 第七章   中  断

第七章 中断  

主片 8259A ,设定如下要求:

(1) 主 8259A 有级联,从 IR4 引入;

(2) 中断请求信号以边沿触发;

(3) 中断类型号为 60H ~ 67H ;

(4) 采用特殊完全嵌套方式;

(5) 采用非自动结束EOI ,非缓冲方式, SP=1 ;

(6) 采用一般EOI 结束方式;(7) 屏蔽 IR2,IR4 和 IR5 以外的中断源。

Page 37: 第七章   中  断

第七章 中断  主片 8259A 的初始化程序如下:

…… MOV AL , 11H ; ICW1,A0=0 MOV DX , MPORT0 OUT DX , AL MOV AL , 62H ; ICW2,A0=1 MOV DX , MPORT1 OUT DX , AL MOV AL , 10H ; ICW3,A0=1 OUT DX , AL MOV AL , 11H ; ICW4,A0=1 OUT DX , AL MOV AL , 0CBH ; OCW1,A0=1 OUT DX , AL MOV AL , 20H ; OCW2,A0=0 MOV DX , MPORT0 OUT DX , AL

Page 38: 第七章   中  断

第七章 中断  

从片 8259A 的要求为:

(1) 从片 8259A 接在主片 IR4 上;

(2) 中断请求信号为边沿触发;

(3) 中断类型号分别为 40H ~ 47H ;

(4) 采用特殊完全嵌套方式;

(5) 采用非自动结束EOI ,非缓冲方式, SP=0 ;

(6) 采用一般EOI 结束;

(7) 屏蔽掉 IR0 和 IR3 以外的中断源。

Page 39: 第七章   中  断

第七章 中断  从片 8259A 的初始化程序为:

…… MOV AL , 11H ; ICW1,A0=0 MOV DX , SPORT0 OUT DX , AL MOV AL , 40H ; ICW2,A0=1 MOV DX , SPORT1 OUT DX , AL MOV AL , 04 ; ICW3,A0=1 OUT DX , AL MOV AL , 11H ; ICW4,A0=1 OUT DX , AL MOV AL , 0F6H ; OCW1,A0=1 OUT DX , AL MOV AL , 20H ; OCW2,A0=0 MOV DX , SPORT0 OUT DX , AL

Page 40: 第七章   中  断

第七章 中断  

将中断服务程序地址置入中断地址入口表中: SEGMENT AT 0 ORG 40H*4SINTR0 DW 2640H ;从片 IR0 中断服务地址 DW 4000H ORG 43H*4SINTR3 DW 4620H ;从片 IR3 中断服务地址 DW 4000H ORG 62H*4MINTR2 DW 2500H ;主片 IR2 中断服务地址 DW 2000H ORG 65H*4 ;主片 IR5 中断服务地址MINTR5 DW 2600H DW 2000H

Page 41: 第七章   中  断

第七章 中断  

例 7.3 系统正在处理由 8259A 的 IR3 引入的中断,而临时有一个低优先级别的中断要紧急处理,一般情况下是不允许的,但 8259A利用设置操作命令字 (OCW3)可以做到这点,对 8259A 设置特殊屏蔽方式 (SMM位 )使运行的中断暂时停止,一直维持到 SMM复位。

Page 42: 第七章   中  断

第七章 中断  IR3 服务程序

…… CLI ;关中断 MOV AL , 08H ;屏蔽 IR3 , OCW1 MOV DX , PORT1 OUT DX , AL MOV AL , 68H ; OCW3,SMM 位置“ 1” MOV DX , PORT0 OUT DX , AL STI ;开中断……. ;低优先级中断处理CLI ;关中断 MOV AL , 48H ; OCW3,SMM复位 MOV DX , PORT0 OUT DX , AL MOV AL , 00H ; OCW1 ,开放 IR3 MOV DX , PORT1 OUT DX , AL STI ;开中断