第七章 微机原理分析
DATA
CODE MAIN
ENDS
SEGMENT PROC FAR CS:CODE,DS:DATA,ES:DATA DS AX,AX AX AX,DATA DS,AX AL,1CH ASSUME
START: PUSH SUB PUSH MOV MOV MOV
MOV
INT
AH,35H
21H
PUSH
PUSH PUSH
优
先 最高
级
除法出错中断 软件中断INT n
溢出中断INTO
非屏蔽中断NMI 可屏蔽中断INTR 单步中断 最低
7.2.2
8086CPU
执行当前指令
指令执行结束吗? Y N
的中断响应过程
取下一 条指令
Y 自动形成中断类型码0 有除法出错中断? N Y 从指令中取出中断类型码n 有软件中断INTn? 若是断点形成中断类型码3 N Y 自动形成中断类型码4 有溢出中断? N Y 有非屏蔽中断? 自动形成中断类型码2 N Y 响应中断 Y 有可屏蔽中断? IF=1? 读取中断类型码 N N
7.3.1
8259A的引脚信号及结构
图7.12
8259A内部结构及引脚信号
1、8259A的外部引脚信号
8259A引脚上的信号与含义如下: D7~D0:三态双向数据总线。 INT:中断请求信号输出线。 INTA:中断应答信号输入线,低电平有效。
RD:读出信号输入线,低电平有效。
WR:写入信号输入线,低电平有效。 CS:芯片选通信号输入线,低电平有效。 A0:地址输入线。 IR7~IR0:外设的中断请求输入线
7.3.2
8259A的工作方式
六种工作方式: 中断请求方式、中断源屏蔽方式、中断嵌套方式、 优先级循环方式、中断结束方式、读8259A状态方式。 1、中断请求方式(三种)
(1)边沿触发器方式
(2)电平触发方式 (3)中断查询方式 2、中断源屏蔽方式(两种) (1)普通屏蔽方式
(2)特殊屏蔽方式
3、中断嵌套方式(两种)
图7.7
中断处理基本过程
7.2
7.2.1
8086CPU中断系统
8086CPU的中断源
256种中断可分为两大类:外部中断和内部中断。
8086 INT 3 指令 INT n 指令 CPU INT O 指令 除法 出错 单步 中断 NMI 非屏蔽 中断请求
中 断
处
理
逻
辑
INTR 8259A 可屏蔽中断请求
(5)指令中断-----------中断类型号是n
内部中断的特点:
① 内部中断的类型号都是固定的,或是在中断指令中给定的。 不需要进入INTA总线周期获取类型号; ② 不受中断允许标志位IF的影响; ③ 用一条指令或由某个标志位启动进入中断处理程序,这样
的中断没有随机性。
2、中断源的优先级
中
断
源
(1) 全嵌套方式 (2) 特殊全嵌套方式 4、优先级循环方式(两种) (1) 优先级自动循环方式
(2) 优先级特殊循环方式
5、中断结束方式(两种) (1) 中断自动结束方式(AEOI) (2) 中断非自动结束方式(两种) l)普通EOI结束方式
2)特殊EOI结束方式
6、读8259A状态方式
7.3.3
ES
BX DS
MOV
MOV MOV MOV MOV INT POP IN AND OUT
DX, OFFSET SOUND
AX, SEG DS,AX AL,1CH AH,25H 21H DS AL,21H AL,0FEH 21H,AL DI,8000H SOUND
STI
MOV
DLY:
DLY1:
MOV
(EOI) IRET
IR2 中断清除 IR4 中断请求
IR1 中断清除
IR4处理程序 IR3中断请求 IR3处理程序 开中断 STI STI 。 。 。 。 。 。 IR3 IR4 (EOI) (EOI) 中断清除 中断清除 IRET IRET
图7.6
中断嵌套管理
4、中断处理过程
中断请求 中断判优
图7.8
8086系统的中断源
1、中断源的类型
1)外部中断(硬件中断) 分为非屏蔽中断和可屏蔽中断两种。 (1)非屏蔽中断 (2)可屏蔽中断
2)内部中断(软件中断)
(1)单步中断-----------中断类型号是1 (2)除法出错中断-------中断类型号是0 (3)断点中断-----------中断类型号是3 (4)溢出中断-----------中断类型号是4
┇
Y H中断服务子程序
是H请求? N 出错处理
恢复现场开中断 返回
图7.4 软件查询程序流程
(2)硬件排队方式
图7.5
中断优先权编码电路
(3)专用中断控制器
3、中断嵌套管理
主程序 IR2和IR4 中断请求 IR2处理程序 IR1中断请求 IR1处理程序 STI STI 。 。 。 (EOI) IRET 开中断
INTADD,试编一段程序设置该中断类型号的中断向量。
MOV
MOV MOV MOV
AX,OFFSET
[BX],AX AX,SEG
INTADD
INTADD
[BX+2],AX
7.2.4
中断程序设计
中断程序设计分为主程序设计和中断服务子程序设计两部分。 主程序---用来完成相关的初始化工作,为实现中断做好准备; 中断服务子程序---用来完成相关的中断处理工作。 1、主程序设计
CAS2~CAS0:双向级联信号线。
SP/EN:编程/双向使能缓冲信号线。
2、8259A的内部结构
(1)数据总线缓冲器 作用:连接系统数据总线和8259A内部总线。 (2)读/写控制逻辑 作用:接收 CPU 的读 / 写命令 RD 、 WR ,片选信号 CS 和 端口选择信号A0。 (3)级连缓冲/比较器
中断向量地址=中断类型号*4
专 用 中 断 (5个)
000
类型0中断入口(除法出错)
类型1中断入口(单步中断) 类型2中断入口(NMI) 类型3中断入口(断点中断) 类型4中断入口(溢出中断) 类型5中断入口 ┇
004
008 00C
IP CS IP CS
系 统 使 用 (27个)
供 用 户 使 用 (224个)
010 014
0C7 080
类型31中断入口 类型32中断入口 ┇ IP CS
3FC
类型255中断入口
15
87
0
图7.10 8086系统的中断向量表
例7-1
解:
某中断源的类型号为34,且已知部分中断向量表如图734*4=136
地址
0087H 0088H ┋
11所示,试求中断服务程序入口的物理地址。
3、中断程序设计举例
编写一个中断处理程序,要求主程序运行时,每20秒响铃 一次,同时屏幕上显示信息‚It’s time to ring!‛ 程序分主程序和中断服务程序两个部分: (1)主程序
(2)中断服务程序
DATA
COUNT MESS
SEGMENT
DW 364 DB‘It’s time to ring!’, 0DH,0AH,‘$’
N
有单步中断吗? Y 自动形成中断类型码1 PSW、CS、IP依次入栈并清除IF和TF标志位 由中断类型码形成中断服务程序 的入口、并执行中断服务程序 IP、CS、PSW依次出栈
图7.9 8086系统中断 响应过程的流程
1、内部中断和非屏蔽中断的响应及处理过程
1) 中断请求与检测 2) 确定中断向量地址 3)保护各标志位状态和屏蔽INTR中断和单步中断 4)保存断点
中断源提出中断请求 判优逻辑进行优先排队 CPU执行完当前指令 CPU取下一条指令 N
中断请求信号有效?
Y 中断响应 CPU关闭中断? Y CPU关闭中断 保护断点地址
N
找出中断源,形成中断服务 程序入口地址,并转向中断服务 保护现场 中断处理 执行中断服务程序 恢复现场 CPU开放中断
中断返回
返回主程序断点处
DS
CODE
ENDS
END START
7.3
中断控制器Intel 8259A
功能: 1)具有8~64级的中断优先权管理功能; 2)每一级都可以通过编程实现中断屏蔽或开放; 3)在中断响应周期,8259A可以自动提供相应的中断类型号;
4)可以通过编程来选择8259A的各种工作方式及任意设定中断
类型号。
STI
DEC JNZ MOV MOV INT MOV
IN
AND SD: XOR
AL,61H
AL,0FCH AL,02H
OUT
61H,AL
MOV
WAIT: LOOP DEC
CX,140H
WAIT DX
JNE
MOV EXIT: CLI
SD
COUNT,364
POP
POP POP
DX
CX AX
POP
IRET SOUND ENDP
第7章
7.1 7.1.1 中断系统 中断的概念及其作用
中
断
1、中断的概念
中断-----指计算机在执行正常程序的过程中出现内部或外部某
些事件的请求时,CPU暂时停止当前程序的正常执行, 转去执行请求事件的处理操作,CPU在事件处理结束
后再回到被暂时中断了的程序继续往下执行。
当前正运行的程序 中 断 请 求 ┇ 指令A 指令B 指令C CPU响 应中断 中断处理程序 指令1 指令2 ┇ ┇
DEC JNZ DEC JNZ POP POP MOV MOV INT RET
SI,0
SI DLY1 DI DLY DX DS AL,1CH AH,25H 21H