MS-DOS软件中断与系统功能调用_第1页
MS-DOS软件中断与系统功能调用_第2页
MS-DOS软件中断与系统功能调用_第3页
MS-DOS软件中断与系统功能调用_第4页
MS-DOS软件中断与系统功能调用_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MS DOSMS DOS 软件中断与系统功能调用软件中断与系统功能调用 操作系统是系统软件的核心 它负责管理计算机的所有资源 协调计算机的各种操作 操作系统和 编辑程序 汇编程序 连接程序 调试程序等一系列系统实用程序一起组成微型计算机的系统软件 MS DOS 是 PC 机上用得最普遍的操作系统 其主要功能可以分为两方面 一个是设备管理功能 管 理显示器 键盘 磁盘 打印机 异步通信口等各种设备资源 另一个是文件管理功能 包括如何在磁 盘上建立文件 删除文件 读 写文件和检索文件等 MS DOS 采用层次化模块结构 它有基本输入 输出模块 BIOS 磁盘管理模块 命令处理模块这 3 个 主要模块 它从两个层次上向用户提供了接口 普通用户可以通过键盘命令在命令处理模块这个层次上 和操作系统打交道 高级用户可以通过软件中断和系统功能调用在 MS DOS 的较低层次上 即磁盘管理 模块和基本输入 输出模块 和操作系统打交道 MS DOS 能处理的命令分内部命令和外部命令两类 内部命令往往是最常用的一些命令 如目录显 示命令 DIR 复制文件命令 COPY 文件改名命令 REN 等 它们所对应的命令执行模块就在 COMMAND COM 程序内部 大部分命令属于外部命令 一个外部命令的处理要通过此命令所对应的一个命令文件的执行 来实现 例如 我们要设计 运行用汇编语言编写的程序 就要用到下列外部命令 用编辑命令 EDLIN 来编辑文件 用汇编命令 MASM 来得到目标文件 用连接命令 LINK 来得到可执行文件 在程序被确认完 全正确之前 还要用调试命令 DEBUG 进行调试 MS DOS 的主要系统功能都是用中断处理程序的形式来提供的 用户可以按照一定的格式在指定寄 存器中存放好某一适当的参数 再用一条 INT 中断指令 便可调用某个中断子程序 这就是利用软件中 断方法来调用操作系统的功能 因为类型为 21H 的软件中断所对应的中断处理程序中包含了实现外部设 备管理功能 文件读 写功能和管理功能 目录管理功能等最常用的功能子程序 它们几乎包括了整 个系统的功能 所以系统功能调用这个术语通常指对类型为 21H 的软件中断 C 1C 1 常用软件中断常用软件中断 常用的几个软件中断类型如表 C 1 所示 表 C 1 常用的软件中断 中断类型号功 能入 口 参 数出 口 参 数 10H 设置屏幕参考表 C 2 1AH 设置时间和读取时间 AH 1 设时间 AH 0 读时间 CX DX 中为所设时间 CX 和 DX 中为时间 20H 程序正常退出无无 25H 读磁盘扇区 AL 盘号 CX 所读扇区数 DX 起始逻辑扇区号 DS BX 缓冲区首址 CF 1 表示出错 26H 写磁盘扇区 AL 盘号 CX 所写扇区数 DX 起始逻辑扇区号 DS BX 缓冲区首址 CF 1 表示出错 27H 程序驻留退出DS DX 程序长度 1 读 写磁盘扇区的软件中断 INT 25H 和 INT 26H 软件中断指令分别用来实现对磁盘指定扇区的读 写 这两条指令在执行时 会 分别转去执行 BIOS 中的读磁盘扇区子程序 调用前 必须按表 C 1 中要求的入口参数对指定寄存器内容进行设置 同时 应保存每个重要寄存 器的内容 因为这个中断破坏除段寄存器 CS DS SS 和 ES 之外的所有寄存器的内容 2 退出程序的软件中断 用户程序中可以分别用 INT 20H 和 INT 27H 软件中断指令来退出程序 用 INT 20H 退出程序很简单 不需要任何入口参数 实际上 INT 20H 指令和 JMP 0 指令是一样的 因为在数据段的 0 单元开始是程序段前缀 PSP 而 PSP 0 PSP 1 两单元中存放的就是 INT 20H 指令 不过 JMP 0 返回方式只能用在扩展名为 COM 的文件中 不能用在扩展名为 EXE 的文件中 因为 COM 文件 总是小于 64K 运行时 DS CS ES SS 的值相同 所以 JMP 0 指令真正能转移到程序段前缀首部 而 扩展名为 EXE 的文件不具备这个特点 用户程序以 INT 27H 退出时 MS DOS 会把此用户程序看成是系统的一个组成部分 因此 在其它 程序装配运行时 这部分用户程序不会受到覆盖 通常用户对自己编写的中断处理程序进行装配以后 常用这种方法返回控制台命令接收状态 因为这样做 MS DOS 会将用户编写的中断处理程序作为系统程 序而驻留内存 所以其它用户程序可以用软件中断的方式调用这部分程序 要注意的是用 INT 27H 指令前必须在 DX 中设置要驻留的程序长度 按字节计算 否则 尽管会实 现返回 但没有得到驻留 3 设置时间和读取时间 用指令 INT 1AH 可以实现对时间的设置和读取 使用这条指令前 在 AH 寄存器中必须存放 1 或 0 以指出当前是要设置时间还是读取时间 如果为设置时间 则还须在 CX 和 DX 中分别存放时间的高位字 节和低位字节作为入口参数 如果是读取时间 CX 和 DX 寄存器中作为出口参数得到时间值 4 屏幕的设置 用户可以用 INT 10H 对屏幕进行设置 使用 10H 中断时 AH 中要存放功能号 并在指定的寄存器中 存放入口参数 表 C 2 列出了 10H 对应的功能 表 C 2 10H 对应的功能 功能块号入口参数功能 0 AL CRT 工作方式对 CRT 初始化 1 CX 光标属性置光标类型 2 DX 行 列号 BH 页号置光标位置 3 BH 页号读光标位置 4 读光笔位置 5 AL 页号选择显示页 6 AL 上滚行数屏幕显示往上滚动 7 AL 下滚行数屏幕显示向下滚动 8 BH 页号读光标处字符 属性 9 AL 字符 BL 属性在光标处写字符 属性 10 AL 字符在光标处写字符 11 DX 彩色标识和彩色值设置屏幕彩色背景 12 DX 行号 CX 列号在指定坐标处写点 13 DX 行号 CX 列号在指定坐标处读点 14 AL 字符写字符 15 取当前屏幕状态 C 2C 2 DOSDOS 系统功能调用系统功能调用 系统功能调用是由 MS DOS 的磁盘管理模块提供的 它包括了三方面的功能 即设备管理 目录管 理和文件管理 1 调用格式 所有系统功能的调用格式都是一致的 按 4 步进行 即 1 在 AH 寄存器中设置系统功能调用号 2 在指定寄存器中设置入口参数 3 用 INT 21H 指令执行功能调用 4 根据出口参数分析功能调用执行情况 只是有些系统功能调用比较简单 不需要设置入口参数 或者没有出口参数 表 C 3 列出了各系统功能调用号对应的功能和入口参数 出口参数 2 设备管理 设备管理包括键盘输入 显示输出 设置磁盘缓冲区 选择当前盘等 12 条功能调用 这里需要指出 09H 0AH 和 03H 04H 这 4 个功能调用的使用注意点 09H 是用来输出字符串的功能调用 要求用 DS 和 DX 指出要显示的字符串的首地址 另外 要注意 用 作为显示字符串的结束符 0AH 是输入 1 行键盘字符的功能调用 使用 0AH 功能时 入口参数中 要求用 DS 和 DX 寄存器给出 输入缓冲区的首地址 并且在缓冲区第 1 个字节中预设置缓冲区长度 功能调用被执行后 缓冲区第 2 个字节中为实际输入字符信息的长度 从第 3 个字节开始才是输入的字符串 03H 和 04H 分别执行异步通信的输入 输出功能 执行输入功能时 输入字符作为出口参数放在 AL 中 执行输出功能时 输出字符作为入口参数放在 DL 中 要求异步通信口设置的初始状态为 2400 波特 无校验位 8 个数据位和 1 个停止位 3 目录管理 目录管理包括查找目录项 更改目录项 建立子目录 删除子目录等功能 这些功能调用的用法都 比较简单 只须对 56H 和 43H 这 2 个功能调用作一说明 56H 功能调用是更改文件名字的 要求设置入口参数时 将 DS 和 DX 寄存器指向旧路径名 将 ES 和 DI 寄存器指向新路径名 另外 要求新旧路径名前的驱动器名相同 43H 是用来显示和修改文件属性的功能调用 用户程序常用此调用来使某个文件改变属性 使它成 为只读文件或隐含文件 属性代码为 00 普通文件 01 只读文件 02 隐含文件 04 系 统文件 4 文件管理 文件管理是 MS DOS 提供给用户的最重要的系统功能调用 这里 一共有两组文件管理功能 一组 是用 24H 以下的功能调用号提供的 这组功能调用和 8 位微型机操作系统 CP M 的功能调用兼容 另一组 是用 3CH 以上的功能调用号提供的 这些功能调用是 MC DOS 所独有的 存取文件时 首先要用文件控制块 FCB 使操作系统知道要存取的哪个用户程序文件 在 FCB 中 用 户程序指出存取文件所在的磁盘名以及文件名 扩展名 还指出记录长度 相对记录号和当前块号 或 者随机记录号 读文件时 要有一个内存区域用来存放文件内容 称之为磁盘缓冲区 将读出的数据保存在磁盘缓 冲区 写文件时 由用户程序先把数据传送到磁盘缓冲区 对于顺序存取方式和普通随机存取方式来说 每次只传输 1 个记录 因此 磁盘缓冲区只要 1 个记录大小就行了 而对于随机分块存取方式和文件代 号法存取方式来说 磁盘缓冲区往往要开辟得很大 读 写文件前 必须打开文件 在存取文件后 尤其是写文件后 一定要有关闭文件操作 通过关闭文件 使操作系统确认此文件 放在磁盘哪一部分 如果写文件时忘了关闭文件 那就会导致写入的文件不完整 不过读文件时 关闭 文件这一步是可有可无的 表 C 3 MS DOS 的功能调用 调用号功 能入 口 参 数出 口 参 数 01 键盘输入字符AL 输入字符 02 显示器输出字符DL 输出字符 03 串行设备字符输入AL 输入字符 04 串行设备字符输出DL 输出字符 05 往打印机输出字符DL 输出字符 06 直接控制台输入 输出DL FFH 输入 AL 输入字符 调用号功 能入 口 参 数出 口 参 数 DL 字符 输出 07 直接控制台输入 无回显 AL 输入字符 08 键盘输入字符 无回显 AL 输入字符 09 显示字符串DS DX 缓冲区首址 为结束符 0AH 输入字符串DS DX 缓冲区首址 格式 首字节为最大 字符数 次字节为实 际输入字符数 0BH 检查键盘输入状态AL 00H 无键入 AL FFH 有键入 0CH 清除键盘输入缓冲区 0DH 磁盘设置和初始化 选 A 为默认驱动器 0EH 选择当前盘DL 盘号AL 系统中驱动器数 0FH 打开文件DS DX FCB 首址AL 00H 成功 AL FFH 未打开指定文件 10H 关闭文件DS DX FCB 首址AL 00H 找到 AL FFH 未找到 11H 查找第一个目录项DS DX FCB 首址AL 00H 找到 AL FFH 未找到 12H 查找下一个目录项DS DX FCB 首址AL 00H 找到 AL FFH 未找到 13H 删除文件DS DX FCB 首址AL 00H 找到 AL FFH 未找到 14H 顺序读一个记录DS DX FCB 首址AL 00H 成功 AL 01H 文件结束 AL 02H 缓冲区太小 AL 03H 读得残缺记录 15H 顺序写一个记录DS DX FCB 首址AL 00H 成功 AL FFH 磁盘满 16H 建立文件DS DX FCB 首址AL 00H 成功 AL FFH 目录区满 17H 文件改名DS DX FCB 首址 DS DX 17 文件 新名字首址 AL 00H 成功 AL FFH 不成功 18H 由 DOS 内部调用 19H 取当前盘盘号AL 当前盘的盘号 1AH 设置磁盘缓冲区DS DX 缓冲区首址 1BH 取当前盘文件分配表 FAT 的有关信息 DS BX FAT 首址 DX FAT 表项数 AL 每簇扇区数 CX 每扇区字节数 调用号功 能入 口 参 数出 口 参 数 1CH 取指定盘文件分配表的 有关信息 DL 盘号DS BX FAT 首址 DX FAT 表项数 AL 每簇扇区数 CX 每扇区字节数 1D 20H由 DOS 内部调用 21H 随机读一个记录DS DX FCB 首址AL 00H 成功 AL 01H 文件结束 AL 03H 残缺记录 22H 随机写一个记录DS DX FCB 首址AL 00H 成功 AL FFH 盘满 23H 取文件长度DS DX FCB 首址 FCB 33 记录数 且 AL 00H 成功 否则 AL FFH 未找到 24H 设置随机记录号DS DX FCB 首址 25H 设置中断向量DS DX 指定4字节地址 AL 中断类型号 26H 由 DOS 内部调用 27H 随机分块读DS DX FCB 首址 CX 所读记录数 AL 00H 成功 AL 01H 文件结束 AL 03H 残缺记录 28H 随机分块写DS DX FCB 首址 CX 所写记录数 AL 00H 成功 AL FFH 盘满 29H 分析文件名DS SI 命令行首址 ES DI 缓冲区首址 ES DI FCB 首址 且 AL 0 则为单义名 AL FFH 无效 AL 01H 广义文件名 2AH 取日期CX 和 DX 中为日期 2BH 设置日期CX 和 DX 中为日期AL 00H 成功 AL FFH 失败 2CH 取时间CX 和 DX 中为时间 2DH 设置时间CX 和 DX 中为时间AL 00H 成功 AL FFH 失败 2EH 设置校验状态 从而使 每次写操作时进行校验 DL 0 AL 1 校验 AL 0 去校验 2FH 取磁盘缓冲区首址ES BX 缓冲区首址 30H 取 DOS 版本号AL 版本号 AH 发行号 31H 终止用户程序并驻留内存DX 程序长度 AL 退出码 即 00 为正常退出 01 为 CTRL C 退出 02 为出错退出 32H 由 DOS 内部调用 33H 设置和检查如设置 则 调用号功 能入 口 参 数出 口 参 数 CTRL Break 功能AL 01 且 DL 00 如去除 则 AL 0 且 DL 01 如检查 则 AL 00 DL 01 有此功能 DL 00 无此功能 34H 由 DOS 内部调用 35H 取中断向量AL 中断类型号ES BX 中断向量 36H 检测磁盘可用空间DL 盘号BX 可用簇数 DX 盘上的总簇数 CX 每扇区字节数 AX 每簇扇区数 37H 由 DOS 内部调用 38H 取国别标志DS DX 缓冲区首址 AL 0 DS DX 处为国别信息 39H 建一个子目录DS DX 指向路径名CY 0 成功 CY 1 失败 3AH 删除一个子目录DS DX 指向路径名CY 0 成功 CY 1 失败 3BH 改变当前目录DS DX 指向新路径名CY 0 成功 CY 1 失败 3CH 建立文件DS DX 路径名首址 CX 文件属性 AX 文件代号或出错代码 3DH 打开文件DS DX 路径名首址 AL 0 为读打开 AL 1 为写打开 AL 0 为读 写打开 AX 文件代号或出错代码 3EH 关闭文件BX 文件代号 3FH 读文件BX 文件代号 CX 所读字节数 DS DX 缓冲区首址 AX 实际读取字节数 40H 写文件BX 文件代号 CX 所写字节数 DS DX 缓冲区首址 AX 实际写入字节数 41H 删除文件DS DX 路径名首址 42H 移动文件读 写指针BX 文件代号 CX DX 位移量 AL 0 绝对移动 AL 1 相对移动 AL 2 绝对倒移 DX AX 新的指针位置 43H 设置 读取文件属性CX DX 路径名 AL 0 读取文件属性 AL 1 设置文件属性 BX 文件代号 CX 属性 CX 文件属性 44H 对 I O 设备的控制AL 0 取状态 调用号功 能入 口 参

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论