提示:主要内容来源===>汇编语言基础教程(主编:谈文蓉、副主编:姜玥)教材第七章内容
8086CPU中断和DOS系统功能调用
中断和DOS系统功能调用
1.中断的概念
(1)定义
- 在 CPU 执行程序的过程中,由于出现了某个事件,CPU暂停当前程序,而转去执行处理该事件的程序,处理完后,返回被暂停的程序处继续执行,这个过程叫做中断。
- 中断源: 引起中断的事件。
- 中断服务程序: 处理中断源的程序。
- 当前程序被中断的地方叫做断点。
- 中断源分为硬中断(外部中断)和软中断(内中断)。
- 硬中断,是由输入/输出外设产生的中断请求引起的中断。
- 可屏蔽中断,可以由 CPU 的中断允许标志 IF 控制
- 非屏蔽中断,不受 CPU 的中断允许标志控制
- 软中断,是由 CPU 内部的某个事件引起的,不受中断允许标志 IF 的控制。它通常由三种情况引起:
- (1)中断指令
- (2)CPU 的某些错误
- (3)DEBUG 设置的
- 硬中断,是由输入/输出外设产生的中断请求引起的中断。
(2)中断号
- 8086X系统允许 256 种中断,每种中断对应 0~255 唯一的编号,称为终端号。
(3)中断向量和中断向量表
- 每种中断都有一个与之对应的中断服务程序。
- 中断向量: 中断服务程序的入口地址。
- 中断向量表: 存放 256 个中断向量的内存区域。
- 每个中断向量占 4 个字节,用 32 位分段地址描述。中断向量表位于内存地址00000H~003FFH,共 1KB(256*4)。对于终端号 n,中断向量所在地址为 4n ~ 4n + 3 。
- 中断向量表在系统复位时初始化。
(4)控制标志 IF 和 TF
- 中断允许标志 IF (Interrupt Flag)
- 用于控制 CPU 是否响应外部可屏蔽中断请求。若 IF=1,则允许中断;若 IF=0,禁止中断。
- IF 标志处理指令语法格式:
- CIL ;IF=0
- STI ;IF=1
- 注意:在程序中应慎用 CLI 指令,错误地使用将导致系统无法正常工作。
- 单步标志 TF
- 用于控制 CPU 是否进入单步调试方式。TF=1,CPU 单步执行。
(5)中断的响应过程
- 当中断发生时,由硬件自动完成下列工作:
- (1)标志寄存器 FLAGS 进栈;保护标志寄存器的状态
- (2)置 IF=0,TF=0;禁止中断和单步调试
- (3)返回地址(CS:IP)进栈;保存中断服务程序执行完成后返回的地址
- (4)根据中断号 n,从地址 0:n*4 取出 4 字节的中断向量,低字节送入 IP,高字节送入 CS
- (5)转去执行中断向量所指的中断服务程序
2.常用的中断指令
(1)中断调用指令 INT
- 格式:INT n ;调用中断号为 n (0~255) 的中断服务程序功能
(2)中断返回指令 IRET
- 格式:IRET ;从中断服务程序中返回
- 功能:从栈里弹出一个双字到 CS:IP ,再弹出一个字到 FLAGS。
3.DOS 系统功能调用
- DOS 的系统功能调用以中断服务的形式存在,每类服务对应一个终端号。
- DOS 系统中,主要分配 21H 号中断用于程序员调用 DOS 操作系统功能,21H 号中断有近百个功能号供用户先择使用,可在汇编程序中直接调用。DOS 功能调用的子程序已按顺序编号,称为功能号。
(1)DOS 系统功能调用的一般方法
- DOS 系统功能调用的一般方法如下:
- (1)在寄存器 AH 中设置系统功能调用号,说明选择的功能
- (2)在指定寄存器中设置入口参数
- (3)用中断调用指令 INT 21H 执行功能调用
- (4)根据出口参数分析功能调用的执行情况
(2)输入/输出类功能调用
功能号 | 功能 | 入口参数 | 出口参数 |
---|---|---|---|
AH=01H | 输入一个字符 | 无 | AL=输入字符的ASCII码 |
AH=02H | 输出一个字符 | DL=输出字符的ASCII码 | 无 |
AH=09H | 输出一个字符串 | DS:DX=字符串首地址 | 无 |
AH=0AH | 输入一个字符串 | DS:DX=缓冲区首地址 | 无 |
AH=4CH | 程序终止结束 | AL=返回代码 | 无 |
- 字符串输入
- 执行该功能调用时,用户按键,最后用回车确认。
- 0AH 号 DOS 功能要设置保存输入字符串的缓冲区,其缓冲区格式如下:
- 第一个字节是最多欲接收的字符个数(包括回车字符,可以是1~255)。
- 第二个字节存放实际输入的字符个数(不包括回车)。
- 第三个字节开始将存放输入的字符串。实际输入的字符数多于定义数时,多出的字符丢掉,且响铃。
- 字符串输出
- 字符串应以 $(24H) 结束。
- 可以输出回车 (0DH) 和 换行 (0AH)字符产生回车和换行的作用。