微机原理及接口技术-第8章-中断系统

更新时间:2023-07-27 19:15:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第八章 微型计算机中断系统 第一节 概述 第二节 中断处理过程

第三节 中断优先级和中断嵌套 第四节 可编程中断控制器8259A

8-1 概述一、中断概念 中断过程:断点 (break point )

主 程 序

中 断 程 序

中断源:引起程序中断的事件

内部中断:中断指令 INT n 外部中断:外设向CPU发出中断申请 中断响应:中断发生是随机的, CPU在每条指令的最后一个T采样 INTR引脚 有申请且IF=1 现行指令执行完后CPU响 应中断 保护断点:CS,IP,PSW入栈 转入中断 中断返回

中断向量表:中断向量表中存放中断服务入口地址。IP CS 中断优先级:优先级高先响应,高级别的中断 可以打断低级别的中断,即中断嵌套。 中断屏蔽:由软件使IF=0 二、中断分类: 8086/8088 的中断源见下图示:

非屏蔽中断请求 NMIINTR 中断逻辑 8259A

可屏 蔽中 断请 求

INT n 指令

INTO 指令

除法 出错

单步 (TF=1)

8086/8088CPU

8086/8088中断源

内部中断:( 软件中断)不受IF的控制,无随 机性。 INT0中断: 运算中若溢出 OF=1 产生类 型4中断,用于加/减指令后。 INTn中断:CPU执行INT后,产生中断 中断矢量=n×4 从n×4开始单元取中断服务程序入口地址 n×4 n×4+1 n×4+2 n×4+3 偏移量 段地址

除法错中断:类型为0。 若除数为0,或商超出R的表达范 围即产生。 单步中断:单步执行一条指令后,产生中断 去显示当前R和M的内容。

外部中断: 非屏蔽中断NMI:边沿触发 两个时钟 不能用软件屏蔽。 一旦申请,CPU必响应。(用于紧急 情况下)

CPU处在指令周期的最后一个机器周期的最 后一个T状态采样NMI线。 中断类型为2。 0段 入口地址存放单元:0008 入口地址 0009 偏移量 000A 入口地址 000B 段地址 可屏蔽中断INTR:高 电平触发 响应后才结束 可用软件屏蔽(开:STI, 关:CLI)

响应INTR的两个条件:1、外设中断请求屏蔽否?

8259A中有8位屏蔽寄存器,若Di=1则被屏蔽2、 CPU允许响应中断否? CPU标志寄存器中的IF位,若IF=1,允许

8-2 中断处理过程可屏蔽中断处理过程: 中断请求—中断向应—保护现场—转到中 断服务执行—恢复现场—中断返回 一、CPU响应中断过程: 响应 外设申请 中断 中断控制器本中断位允许(Di=0) 三条件 CPU中断允许(IF=1)

CPU相应中断后:在INTA线上发出两信号

外设接到此信号给 出中断类型号 CPU从响应中断到转入中断服务程序的过程:中断服务入口

已响应

响应

从DB线读中断类型号暂存于R PSW入栈 IF=0,TF=0(屏蔽其它中断源) 保护断点CS、IP 入栈 由类型号找到中断矢量执行中断服务程序 执 行完中断服务最后一条指令IRET,弹出CS、IP、PSW, 继续原断点

程序 二、中断向量表: 获取中断服务 1)软件查询法:响应中断后,执行 程序入口地址 中断查询程序,依次判断是哪 的方法 个中断源申请的,而后转入 2)矢量中断(建立中断向量表)

1、中断向量表: 256类,共占1K个单元(00000~003FFH) 8086/8088中断向量表如下图所示:

150000专 用 中 断 (5个) 0004 0008 000C 0010 系 统 使 用 (27个) 供 用 户 使 用 (224个) 0014

8 7

0IP CS IP CS

类型0中断入口(除法出错) 类型1中断入口(单步中断) 类型2中断入口(NMI) 类型3中断入口(断点中断) 类型4中断入口(溢出中断)

类型5中断入口

007C 0080

类型31中断入口 类型32中断入口

03FC

类型255中断入口

IP CS

8086/8088中断向量表

2、中断向量(入口地址)的设置 中断向量(入口 用指令设置(绝对地址) 地址)的设置方法 利用DOS设置(符号地址) 中断向量表如下图8-4: 用指令设置中断向量 例8-4:用指令来设置中断服务的入口地址到中断类 型号n所对应的中断向量表中。 MOV AX , 0 ;主程序中设置 MOV ES , AX MOV DI , N*4 ;中断类型号*4 MOV AX , OFFSET INTRAD ;送中断子程序的偏移地址 AX CLD

STOSW ;偏移地址送到[4n],[4n+1]单元 MOV AX , CS STOSW ;偏移地址送到[4n+2],[4n+3]单元 STI ; 开中断 : : INTRAD : ;中断服务子程序 PUSH AX STI : POP AX IRET

如下为8086/8088中断向量表: IP 专 000 类型0中断入口(除法出错)CS 用 004 类型1中断入口(单步中断) 中 008 类型2中断入口( NMI) 段 00C 类型3 中断入口(断点中断) (5个) 010 类型4中断入口(溢出中断) 系统 014 类型5中断入口 使用 ... (27个) 07C 类型31中断入口 用户 080 类型32中断入口 使用 ... (224个)3FC 类型255中断入口

例8-5:用指令设置中断向量方法之二。 MOV AX , 0 MOV ES , AX MOV BX , N*4 MOV AX , OFFSET INTRAD ;置入偏移地址 MOV ES:WORD PTR[BX] , AX MOV AX , SEG INTRAD ; 置入段地址 MOV ES:WORD PTR[BX+2] , AX STI : INTRAD: ; 中断服务子程序 : IRET

利用DOS功能调用INT 21H设置中断向量:

AL=中断类型号 设置中断向量: DS:DX=中断服务入口地址 AH=25H 执行:INT 21H 即可 取中断向量: 预置 AL= 中断类型号 AX= 35H 执行: INT 21H 返回: ES:BX=中断服务入口地址

本文来源:https://www.bwwdw.com/article/gtjm.html

Top