当前位置:
文档之家› 【汇编语言第3版】第7章 实模式下的中断程序设计解析
【汇编语言第3版】第7章 实模式下的中断程序设计解析
8.1.1 中断与中断源
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
中断:当一种特殊事件发生时,CPU停止正在运行的程序,而转去执
行该事件的处理程序,处理完该事件后,再返回原程序继续 正确地执行下去,这个过程就称为中断。 中断源:引起中断的事件
8086/8088的中断源
非屏蔽中断请求 8259A NMI INTR IR1 可编程 IR2 中断 IR3 控制器 (PIC) n 4 1 0 IR4 IR5 IR6
2018/10/9
8
第8章 实模式下的中断程序设计
2.软中断处理程序 主要步骤: (1)考虑切换堆栈。 (2)及时开中断。 (3)应该保护现场。 (4)完成中断处理。 (5)恢复现场。 (6)堆栈切换。 (7)一般利用IRET指令实现中断返回。
汇 编 语 言 程 序 设 计
2018/10/9
9
8.2.2 设置和获取中断向量
第8章 实模式下的中断程序设计
本章主要教学内容
1.中断的基本概念; 2.中断程序的设计方法; 3.BIOS/DOS中断调用。
汇 编 语 言 程 序 设 计
本章主要教学目的及要求
1.理解中断的基本概念; 2.掌握中断程序的基本设计方法; 3.能熟练使用BIOS/DOS中断调用。
2018/10/9
1
8.1 中断概述
处 理 CPU 某 些 错误类型有两种:除法错中断和溢出中断 错误的中断 调试程序设 置的中断 如单步中断、断点中断、失效、陷井和中止
2018/10/9
3
8.1.3 中断向量表
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
定义:各种中断处理程序的入口地址放在一起形成一个地址表
偏移地址IP的值 00000H 00004H 共1K字节 存放256个中断 00008H
外部中断
类 型
内部中断
非屏蔽中断NMI CPU不能禁止NMI线上的中断请求,主要用 于一些紧急的故障处理 可屏蔽中断INTR CPU 是否做出响应由该外设的中断请求是 否被屏蔽和CPU是否允许响应中断决定 INT引起的中断 执行 INT n 指令产生中断,调用中断程序来 完成中断功能,操作数n将给出中断的类型
2018/10/9
7
8.2 中断处理程序设计
8.2.1 中断处理程序的编写
1.外中断处理程序
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
主要步骤: (1)保护现场。主要指各通用寄存器内容和除CS外代码段寄存器 的内容。保护方法一般是压栈。 (2)尽快完成中断处理,以免影响其他外设中断请求。 (3)恢复现场。 (4)中断返回。用IRET指令返回。
0C 0D
IR0
08 09 0A
0B
CPU
中断逻辑
系统定时器 键盘 彩色/图形接口 保留(通信) 串行通信接口 保留(ALT打印机) 软盘 保留(打印机)
0E 0F
INT n 指令
INT0 指令
除法 错误
单步 TF=1
IR7
2018/10/9
2
8.1.2 中断分类
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
含义:正在运行的中断处理程序,又被其他中断源中断 注意:实际使用时,多层中断嵌套要受到堆栈容量的限制
2018/10/9
6
8.1.6 中断指令
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
外中断是由外设发出中断信号引起的,没有中断指令 软中断指令 格式: INT n 功能:转到相应中断处理程序执行 中断返回指令 格式: IRET 功能:从中断服务程序返回主程序
2018/10/9
5
8.1.5 中断优先级
1.中断优先级
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
含义:当多个中断源同时申请中断时,CPU按优先级从高到低的次序 依次处理各中断源的请求 优先级从高到低的次序为: 优先级高
优先级低 2.中断嵌套
非屏蔽中断(NLeabharlann I) 内部中断 可屏蔽中断(INTR) 单步中断
…… MOV AX,SEG INTHAND ;中断处理程序的段地址 MOV DS,AX MOV DX,OFFSET INTHAND ;中断处理程序的偏移地址 MOV AH,25H MOV AL,n INT 21H ……
2018/10/9
10
2.获取中断向量
第8章 实模式下的中断程序设计
方法1:直接读取法。利用MOV指令直接读取中断向量
类型0中断处理 程序入口地址 类型1中断处理 程序入口地址 类型2中断处理 程序入口地址 ……… 类型FF中断处理 程序入口地址
段地址CS值
003FCH
中断向量地址=中断类型号*4
2018/10/9
4
8.1.4 中断过程
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
中断发生时,硬件自动完成的动作如下: (1)取中断类型号n; (2)标志寄存器(PSW)内容压栈; (3)当前代码段寄存器(CS)内容压栈; (4)当前指令指针(IP)内容压栈; (5)禁止外部中断和单步中断(置IF=0,TF=0); (6)从向量表中取4×n地址的内容送IP,取4×n+2地址中内容送CS; (7)转中断处理程序。 中断与子程序调用的差别: (1)在保护中断现场时,除了保护返回地址CS:IP之外,还保存 了标志寄存器PSW的内容。 (2)在中断发生时CPU自动清除了IF和TF
1.设置中断向量
第8章 实模式下的中断程序设计
汇 编 语 言 程 序 设 计
方法1:直接写入法。用MOV指令将中断向量直接写入中断向量表
【例8-1 】使用直接写入法设置中断向量。 方法2:使用 DOS 功能调用法。25H号DOS功能调用可以设置中断向量 … … 出入口参数: MOV AX,0 预置:AH=25H MOV DS,AX AL=中断类型号 MOV BX,n*4 ;设置n号中断向量 DS∶DX =中断向量 CLI ;关中断 执行:INT 21H MOV WORD PTR[BX],OFFSET INTHAND ;置偏移 功能:将指定的中断向量写入中断向量表。 MOV WORD PTR[BX+2],SEG INTHAND ;置段值 【例8-2 】使用DOS功能调用设置中断向量。 STI ;开中断 INTHAND: … …