第七章 中断控制接口

7.1 8088中断系统

256个中断,中断向量号位0~255

7.1.1 8088的中断类型

非屏蔽中断源NMI

可屏蔽中断源INTR

1.内部中断,8088内部执行程序出现异常引起的程序中断。

(1)除法错中断

(2)指令中断

INT n是一个向量号为n的内部中断。通常是2字节指令,但是向量号为3的指令中断是1字节指令。

(3)溢出中断

INTO,溢出标志OF为1,则产生一个向量号为4的内部中断,称为溢出中断。

(4)单步中断

单步标志TF为1,则在每条指令执行结束后产生一个向量号为1的内部中断,称为单步中断

2.外部中断

(1)非屏蔽中断

主要用于处理系统的意外或故障

(2)可屏蔽中断

7.1.2 8088的中断响应过程

优先级从高到低为软件中断->非屏蔽中断->可屏蔽中断->单步中断

图7-2 其中TEMP是为了识别单步中断

8088各种中断源的优先级实际上是指被识别出来的先后顺序;多种中断同时请求时,最先响应的则可能是单步中断或NMI中断

7.1.3 8088的中断向量表

中断服务程序入口地址是一个逻辑地址,含有段地址CS和偏移地址IP,低字是偏移地址,高字是段地址,需占用4个字节,每4个字节为一个地址,256个中断需要1KB区域。

7.2 内部中断服务程序

(1)中断服务程序入口地址设置 DOS功能调用INT 21H,AH=25H

入口参数:AL=中断向量号,DS:AX=中断服务程序入口地址

(2)获取中断服务程序入口地址 DOS功能调用INT 21H,AH=35H

入口地址:AL=中断向量号

出口参数:ES:BX=中断服务程序入口地址

7.3 8259A中断控制器

一片8259A可以管理8级中断,通过多片级联可以扩展至64级

7.3.1 8259A的内部结构和引脚

1.中断控制     图7-4    表7-1

3个8位可读写寄存器

(1)中断请求寄存器:保存8条外界中断请求信号IR0~IR7的请求状态。Di表示IRi有中断请求

(2)中断服务寄存器:保存正在被8259A服务着的中断状态。Di表示IRi正在被服务

(3)中断屏蔽寄存器:保存对中断请求信号IR的屏蔽状态,Di表示IRi中断被屏蔽

2.与处理器接口

4个初始化命令字ICW、3个操作命令字OCW和4个状态字

3.中断级联

一个主8259A,若干个从8259A

7.3.2 8259A的中断过程

图7-5    第一个响应信号启动信号,第二个响应周期用于读取外部送来的中断向量号。

7.3.3 8259A的工作方式

1.设置优先权方式

(1)普通全嵌套方式,优先权从高到低一次位IR0、IR1……IR7。在ISR的Di位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套。

(2)特殊全嵌套方式,当处理某一级中断时,允许同级中断的嵌套。一般在级联时主片为特殊全嵌套方式。

(3)优先权自动循环

(4)优先权特殊循环

2.结束中断处理方式,即使ISR某位复位

(1)自动中断结束方式

(2)普通中断结束方式,配合全嵌套优先权方式

(3)特殊中断结束方式,配合循环优先权方式

3.屏蔽中断源方式

(1)普通屏蔽方式

(2)特殊屏蔽方式,将IMR的Di置为1就会使ISR的Di置为0

4.中断触发方式

(1)边沿触发方式,上升沿

(2)电平触发

5.数据线连接方式

(1)缓冲方式

(2)非缓存方式

7.3.4 8259A的编程

可以分为初始化编程和中断操作编程

1.初始化命令字ICW    图7-7

必须按照ICW1~ICW4的顺序写入,其中ICW1和ICW2是必须送的,而ICW3和ICW4是由工作方式决定的

(1)ICW1

写入ICW1的条件是8259A的地址引脚A0=0以及ICW1的D4=1

D0规定是否写入ICW4

D1规定单片或级联方式,为1则是单片方式,不需要写入ICW3,为0则是级联方式,要写入ICW3

D3规定中断触发方式,1为电平触发,0为边沿触发

D4必须为1

(2)ICW2

中断向量字,用于设置中断向量号。T7~T3作为中断向量号的高5位,而低3位由8259A自动按IR输入端确定

(3)ICW3,级联命令字

对主片8259A:ICW3的每一位表示是否接有从片,对从片,第三位有效,表示接到主片的哪一个引脚上

(4)ICW4,中断方式字

D0表示选用的微处理器类型,本书中都为1

D1表示采用自动中断结束(1)还是非自动中断结束(0)

D2表示是主片(1)还是从片(0)

D3表示数据线采用缓冲方式(1)还是非缓存方式(0)

D4表示工作于特殊全嵌套方式(1)还是普通全嵌套方式(0)

2.操作命令字OCW    图7-8

工作期间可以随时接受操作命令字OCW,OCW1~OCW3,写入没有顺序要求

(1)OCW1

OCW1是屏蔽命令字,内容写入中断屏蔽器IMR

OCW2是中断结束和优先权循环命令字,循环、设置优先级和中断结束三位配合使用,低三位位指定IR引脚

OCW3是屏蔽和读状态命令字

3.读取状态字

OCW3中的RR和RIS(D1和D0)可以读取IRR和ISR,当A0引脚位高电平时读取的都是IMR

查询字,OCW3中使P=1,如果查询字的I为1说明外设请求中断,低三位用于指示,如果I为0说明没有外设请求中断。

4.命令字和状态字的区别方法

A0=0时,可以写入ICW1,OCW2,OCW3并读取IRR,ISR和查询字,A0=1时,可以写入ICW2~ICW4,OCW1并读出IMR

7.4 8259A在IBM PC系列机上的应用

图7-9

(1)利用上升沿作为中断请求IRQ的有效信号

(2)IRQ0~IRQ7的中断向量号依次为08H~0FH,IRQ8~IRQ15依次为70H~77H

(3)采用普通全嵌套优先权方式,中断优先权从高到低依次为IRQ0~IRQ2,IRQ8~IRQ15,IRQ3~IRQ7且不能改变

(4)采用普通中断结束EOI方式,需要在中断服务程序最后发送EOI命令

(5)一般采用普通屏蔽方式,通过写入IMR允许中断,

IRQ9替代IRQ2

你可能感兴趣的:(第七章 中断控制接口)