第七章 中断控制接口
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