首页 > 技术文章 > 第十三章 int指令

codeleven 2019-06-18 20:45 原文

13.1 int指令

int指令的使用格式:int nn表示中断类型码,它的作用是引发中断,它的中断流程如下所示:

  1. 取中断类型码n
  2. 标志寄存器入栈
  3. 设置IF=0、TF=0
  4. 压入CS、IP
  5. 设置IP = (4 * n),CS = (4 * n + 2) [表示取对应地址上的内容]

从而转去执行n号中断处理程序

13.2 编写供应用程序调用的中断例程

编写中断例程主要分为三步:

  1. 编写实现 要求的程序;
  2. 安装程序,将其安装在0:200(也可以放在其他位置,但是要考虑不被其他程序覆盖)
  3. 设置中断向量表,将程序的入口地址保存在 中断类型码 所在的表项,使我们编写的程序变为中断7ch的中断例程。

比如13.2的问题一:

  1. 编写一个 求平方数 的程序
  2. 安装程序,将其安装在0:200
  3. 设置中断向量表,这里题目要求设置在 7ch处,所以我们应该在中断向量表的7ch处设置程序的入口地址。

13.3 对int、ret和栈的深入理解

这一步简单来说就是执行int n指令后,对CSIP的处理流程:

  1. 将标志寄存器压入栈中
  2. 将IF、TF设置为0
  3. 按顺序将CS、IP压入栈中

对int的理解
当进入中断例程时,SP指向的位置即是IP所在位置,SP + 2 指向的位置即是CS所在的位置。

13.4 BIOS和DOS所提供的中断例程

系统版的ROM中存放着一套程序,称为BIOS(基本输入输出系统),BIOS主要包含以下几部分内容:

  1. 硬件系统的检测和初始化程序
  2. 外部中断和内部中断的中断例程
  3. 用于对硬件设备进行I/O操作的中断例程
  4. 其他和硬件系统相关的中断例程

除此之外操作系统DOS也会提供了一些中断例程,这些中断例程就是操作系统向程序员提供的编程资源。

推荐阅读