微机接口--中断控制使用解析

上传人:最**** 文档编号:117098920 上传时间:2019-11-18 格式:PPT 页数:87 大小:571.50KB
返回 下载 相关 举报
微机接口--中断控制使用解析_第1页
第1页 / 共87页
微机接口--中断控制使用解析_第2页
第2页 / 共87页
微机接口--中断控制使用解析_第3页
第3页 / 共87页
微机接口--中断控制使用解析_第4页
第4页 / 共87页
微机接口--中断控制使用解析_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《微机接口--中断控制使用解析》由会员分享,可在线阅读,更多相关《微机接口--中断控制使用解析(87页珍藏版)》请在金锄头文库上搜索。

1、中中 断断 控控 制制 器器 第第 7 7 章章 第7章 中断控制接口 n教学重点 n 8088 CPU的中断系统 n 8259A的中断工作过程和工作 方式 n 中断服务程序的编写 7.1 8088中断系统 n8088的中断系统采用向量中断机制 n一共可处理256个中断源,中断向量编号 为0255,用以区别不同的中断。 n借助专用的中断控制器 Intel 8259A对 系统中的可屏蔽中断资源(INTR)进行 扩充和管理, 8259A 的功能有: n扩充系统的可屏蔽中断资源(每片可 管理8个中断,级联后最多可管理64个中断 ) n实现中断优先级比较 n实现中断源的识别(通过向总线送中 断矢量)

2、7.1.1 8088的中断类型 中断逻辑 INTO 指令 单步 中断 除法 错误 INT n 指令 CPU 8259A 中断 控制器 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 来 自 外 设 的 中 断 源 -INTA 可屏蔽中断申请 INTR 不可屏蔽中断申请 可屏蔽中断源 不可屏蔽中断源 内部中断 INT 3 指令 3n401 NMI 中断 2 不可屏蔽中断源 外部中断 8088的中断分类 n内部中断内部机制产生 n除法错中断(0号)除运算结果溢出时产生 n指令中断(n号)执行int n指令后产生(操 作码CDH) n断点中断(3号)执行int 3指令(单字节指令 操

3、作码CCH )用于在调试中设置断点,程序遇断点则中 断 n溢出中断(4号)执行into指令,且前面运算 有溢出(OF=1)时产生 n单步中断(1号)TF标志置1后,每执行一条 子指令将发生一次 n外部中断外部引脚触发 n非屏蔽中断(外设提供向量号)触发INTR 引脚产生 n可屏蔽中断(2号) 触发NMI引脚产生 1. 内部中断 n内部中断是由于8088内部执行程序出现特殊情 况而引起的中断 n除法错中断:向量号为 0 n指令中断(int n):向量号为 n n断点中断(int 3 ):向量号为 3 n溢出中断(into ) :向量号为 4 n单步中断: 向量号为 1 内部中断的中断向量号已由I

4、ntel公司确定 2. 外部中断 n外部中断是由于8088外部通过CPU引脚提出中 断请求而引起的中断 n非屏蔽中断(NMI): 向量号为 2 n外部通过非屏蔽中断NMI请求,必须响应 n非屏蔽中断主要用于处理系统的意外或故障 (如奇偶校验或协处理器运算错误等) n可屏蔽中断(INTR):向量号由中断控制 器提供 n外部通过可屏蔽中断 INTR 请求,由标志位 IF 控制是否响应;响应时将产生有效的 INTA 信号 n可屏蔽中断主要用于外设中断请求(请求交 换数据等服务) IF = 0 可屏蔽由 INTR 引脚引发的中断 中断标志IF的状态 nIF0:可屏蔽中断不会被响应(禁止中断,关中断,

5、中断屏蔽) n系统复位时 IF0 n任何一个中断被响应,将使IF0 n执行指令CLI,可使IF0 nIF1:可屏蔽中断会被响应(允许中断,开中断,中 断开放) n执行指令STI,可使IF1 n执行指令IRET后,IF 将恢复为中断前的状态(即IF=1 ) 明确 IF 标志的状态是关键 7.1.2 8088的中断响应过程 nCPU查询各中断的先后顺序,决定 了各中断源的优先级别: n软件中断 n除法错中断 n指令中断 n溢出中断 n非屏蔽中断 n可屏蔽中断 n单步中断 高 低 8088的中断响应过程 NMI N 软件中断 INTR TF=1 中断响应周期 读中断向量号 下条指令 现行指令 IF1

6、 N NN N Y Y Y Y Y 执行中断服务 8088的中断响应过程(续) Y 还有NMI TEMP1 标志寄存器入栈 TEMPTF,IFTF0 CS:IP入栈 获取中断向量 执行服务程序 弹出CS:IP 弹出标志寄存器 返回被中断程序 (1) (2) (3) (4) (5) N N Y (6) 单步中断 标志暂存 8088的中断响应过程(续) n8088各种中断源的优先权,实际上 是指被识别的先后顺序 n多种中断同时请求时,最先响应的 则可能是单步中断或 NMI中断 7.1.3 8088的中断向量表 4B 4B 中 断 向 量 表 1KB 3FFH 0H 0号中断向量 IP CS n弄清

7、几个概念: n中断向量号N(中断类型 号) n中断向量(中断服务程序 的入口地址) n中断向量表 n中断向量存放的首址: N4 以下详述 8088的中断向量和中断向量表 n中断向量号区别不同中断源的编号0255 ,也 称中断向量号。 n中断向量指示中断服务程序的入口,该地址 包括:偏移地址IP 、段地址CS 。每个中断向量的 低字是偏移地址、高字是段地址,需占用4个字节 (低对低,高对高)。 n中断向量表8088 微处理器从物理地址000H开 始到3FFH(1KB),依次安排256个中断向量。所 占用的1KB区域,称中断向量表。 nN号中断向量存放的首地址N4 7.2 内部中断服务程序 n编写

8、内部中断服务程序与编写子程序类似 n利用过程定义伪指令PROC/ENDP n第1条指令通常为开中断指令STI n最后用中断返回指令IRET n通常采用寄存器传递参数 n主程序需要调用中断服务程序 n使用前,需要重新设置中断向量(入口地址 ) n利用INT n指令调用中断服务程序 例7.1 内部中断服务程序 n编写: 80H 号中断服务程序 n功能:通过BIOS功能调用INT 10H,显示以 “0”结尾的字符串。 n入口参数:DS:DX存字符串缓冲区首地址( 段地址:偏移地址)。 数据 段 intoffdw ? ;用于保存原中断向量将来恢复 intsegdw ? ;用于保存原中断向量将来恢复 i

9、ntmsg db A Instruction Interrupt ! db 0dh,0ah,0 ;要显示的信息 例7.1 以下分段介绍程序 保存中断 向量 mov ax, 35 80h ;读出原中断向量 int 21h mov intoff, bx;保存偏移地址 mov intseg, es;保存段基地址 例7.1 设置中断向量的 做法 push ds mov dx, offset new80h mov ax, seg new80h mov ds, ax mov ax, 25 80h ;设置新中断向量 int 21h pop ds 例7.1 调用中断服务 程序 mov dx,offset in

10、tmsg int 80h ;中断调用 例7.1 注意比较指令:int / call 主程序结 束 mov dx,intoff mov ax,intseg mov ds,ax mov ax,25 80h ;恢复原中断向量 int 21h mov ax,4c00h ;返回DOS int 21h 例7.1 屏幕显示:屏幕显示:A Instruction Interrupt !A Instruction Interrupt ! new80h proc sti ;开中断,允许中断嵌套 push ax ;保护现场 push bx push si 例7.1 中断服务子程 序 显示字符 串 mov si, d

11、x new1:mov al, si;取显示字符 cmp al, 0 ;判是否串尾 jz new2 mov bx, 0 ;调BIOS中断 mov ah, 0eh ;子功能号 int 10h inc si jmp new1 例7.1 退出中断服务 程序 new2: pop si;恢复现场 pop bx pop ax iret;中断返回 new80h endp 例7.1 用int 21h子功能访问中断向 量 nAH=25 设置中断向量 n入口参数:ds:dx =中断向量,al =中断 向量号 nAH=35 读取中断向量 n入口参数:al =中断向量号 n出口参数:bx:es =中断向量 设置中断向量

12、: mov dx,intoff mov ax,intseg mov ds,ax mov ax,25 80h int 21h 读取中断向量: mov ax,35 80h int 21h mov intoff, bx mov intseg, es 直接访问中断向量(以int 80h 为例) n设置中断向量: push ds xor ax,ax mov ds,ax lea bx, 80H*4 mov word ptr ds:bx, intoff inc bx inc bx mov word ptr ds:bx, intseg pop ds n读取中断向量: push ds xor ax,ax mov

13、 ds,ax lea bx, 80H*4 mov intoff , word ptr ds:bx inc bx inc bx mov intseg, word ptr ds:bx pop ds 7.3 8259A中断控制器 nIntel 8259A是可编程中断控制器(PIC)。 n可配合CPU(I8080/85、I8086/88/286/386等)管 理可屏蔽中断。 n8259A的基本功能: n1片8259A可以管理8级中断,经级联最多可扩 展至64级 n每一级中断都可单独被屏蔽或允许 n在中断响应周期,可提供相应的调用指令(配 合I8080/85 )或中断向量号(配合I8086/88/286

14、/386 ) n8259A设计有多种工作方式,通过初始化编程 进行设置 7.3.1 8259A的内部结构和引 脚 D7D0 -INTA INT 中断请求寄存器 中断屏蔽寄存器 数据 总线 缓冲器 IR0 IR7 读/写 控制 逻辑 级联 缓冲器 比较器 -RD -WR A0 -CS CAS0 CSA1 CAS2 -SP/-EN 优先权判别电路 中断服务寄存器 控制逻辑 1. 中断控制 n中断请求寄存器IRR n记录中断请求( IR0IR7 ) nDi位为1表示相应引脚有中断请求;为0表示 无请求 n中断服务寄存器ISR n记录中断服务( IR0IR7 ) nDi位为1表示相应中断正在服务中;为

15、0表示 位在服务 n中断屏蔽寄存器IMR n记录中断屏蔽( IR0IR7 ) nDi位为1表示相应中断被屏蔽(禁止);为0 表示允许 2. 与处理器接口 -CS A0 -RD -WR功能 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 1 写入ICW1、OCW2和OCW3 写入ICW2ICW4和OCW1 读出IRR、ISR和查询字 读出IMR 数据总线高阻状态 数据总线高阻状态 CAS0 IR0 CAS1 IR1 CAS2 IR2 IR3 -INTA IR4 IR5 INT IR6 IR7 -SP/-EN CAS0 -INTA CAS1 CAS2 INT IR0 IR1 -SP/-EN IR7 CAS0 IR0 CAS1 IR1 CAS2 IR2 IR3 -INTA IR4 IR5 INT IR6 IR7 -SP/-EN -INTA INTR +5V 8259级联工作示意图 3. 8259A的级连 输出得到响应 的从片编号 3. 中断级连 n8259A可以级连,1个主片最多可以级连8个从片 ,级连时的连接方法: n主片级连线CAS0CAS2连至每个从片的CAS0 CAS2,输出被选中的从片编号,INT 线连至CPU的中断 请求输入端INTR n从片中断请求信号 INT连至主8259A的一个

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号