实验五 简单 DOS 和 BIOS 调用汇编程序设计

. 实验目的:

掌握简单 DOS 系统功能和 BIOS 的调用方法

. 实验要求:

1. 掌握 DOS 系统功能调用方法

A 了解 DOS 系统调用所完成的功能

B 掌握如何根据题目要求利用系统调用完成所需的功能

C 掌握系统调用的方法, 包括入口参数设置,功能号设置,系统调用和出口参数获得

2. 掌握 BIOS 调用方法

. 实验仪器:

PC 机一台

. 实验内容:

5.1 在键盘上输入十个一位的十进制数, 相加后在屏幕上显示。

参考系统调用:

A 键盘输入并回显 INT 21H 功能 01H

B 显示输出 INT 21H 功能 02H

5.2 在屏幕上显示 "What is your name ? " ,输入自己姓名后显示

" My name is XXX " 。

参考系统调用:

A 显示字符串 INT 21H 功能 09H

B 键盘输入到缓冲区 INT 21H 功能 0AH

5.3 在屏幕上显示 ASCII 字母表。

5.4 将当前键盘状态在屏幕上显示, 用 ON/OFF 表示。

参考系统调用:

A 读当前键盘状态 INT 16H 功能 02H

入口参数: 无

出口参数: AL : 当前状态

7 6 5 4 3 2 1 0

. . . . . . . 1 RIGHT SHIFT 键按下

. . . . . . 1 . LIFT SHIFT 键按下

. . . . . 1 . . CTRL 键按下

. . . . 1 . . . ALT 键按下

. . . 1 . . . . SCROLL LOCK 键按下

. . 1 . . . . . NUM LOCK 键按下

. 1 . . . . . . CAPS LOCK 键按下

1 . . . . . . . INS 键触发

5.5 在屏幕上显示系统日期和时间,用英文表示星期几。

参考系统调用:

A 取系统日期 INT 21H 功能 2AH ( 置系统日期 2BH )

入口参数 AH= 2AH

出口参数 CX= 年 ( 1980 ~ 2099)

DH= 月 ( 1 ~ 12 )

DL= 天 ( 1 ~ 31 )

AL= 星期几 ( 0:星期天,1:星期一...)

B 取系统时间 INT 21H 功能 2CH ( 置系统时间 20H )

入口参数 AH= 2CH

出口参数 CH= 小时 ( 0 ~ 23 )

CL= 分 ( 0 ~ 59 )

DH= 秒 ( 0 ~ 59 )

DL= 百分秒 ( 0 ~ 99 )

5.6 在键盘上输入等待时间 (毫秒) 后,屏幕上显示 " BEGIN ..", 等待要求的时间后, 再显示 " END "。

参考系统调用:

A 标准时间等待( AT 以上机器 ) INT 15H 功能 86H

入口参数 AH= 86H

CX:DX = 等待的微秒数

5.7 显示当前 MS-DOS 版本 ( V5.0 )。

参考系统调用:

A 取 MS-DOS 版本号,次版本号和版本标志

INT 21H 功能 33H 子功能 06H

入口参数 AH= 33H

AL= 06H

出口参数 BL= 版本号

BH= 次版本号

DH= 版本标志

5.8 在屏幕上循环显示 ASCII 符号表 ( 由 21H 开始到 0FFH ),直到键入回车键结束。

5.9 自编题。

. 实验原理:

  BIOS 和 DOS 是两组系统服务软件集合,它们使用户能够访问和使用 PC 机的硬件,也可以这么说,对一个汇编程序编程者来说,如果要使用 PC 机硬件的话,一般是采用 BIOS 和 DOS 调用来实现。在使用 MS-DOS 的 PC 机上使用硬件的基本方法有以下三种:

直接访问硬件

    使用 PC 机硬件资源最直接的方法是通过编写使用 IN 和 OUT 指令程序来实现,编写直接访问硬件的程序需要编程者对所使用硬件的控制非常熟悉,包括口地址,控制命令,硬件结构等,这些,对一般的编程者来说,要掌握是有一定难度的,同样,即使是编程者掌握了必要的硬件知识,但由于直接访问所要考虑的因素较多,也会使编写的程序相当繁杂,增加了调试程序的困难,另一方面,编程者按自己的要求设置硬件的工作方式,有可能会影响整个系统的运行,另外,采用直接访问硬件的编程方法编制的程序,其可移植性相当差,在一个机器上运行的程序,换到另外一个厂家生产的机器上有可能无法运行,因此,如果不是为了获得更高的执行效率和获得 DOS 和 BIOS 不支持的功能,程序员应避免采用该方法。

使用 BIOS 调用

    BIOS 称为基本输入输出系统,由 DOS-BIOS 和 ROM-BIOS 两部分组成,它是计算机硬件和其它程序之间的第一道缓冲。BIOS 直接和外设通讯,完成设备一级的控制,并附有其它的实用服务功能,它为编程者提供了一个简单的软件接口以避免和外设直接打交道,这样,可以降低编程者对硬件要求的了解程度,简化使用 PC 机硬件资源的程序,而 BIOS 是 PC 机的标准软件接口,具有兼容性,提高了编制程序的可移植性。

    采用 BIOS 功能调用主要是为了得到较高的运行效率(与DOS功能调用相比),或者需要利用 DOS 不具备的某些功能.。BIOS 调用最常见的是在显示器的控制程序中,不同的显示器会增加相应的 BIOS 功能。

使用 DOS 调用

    DOS 在更高层次上给出了与 BIOS 相同的功能,一般说来, DOS 调用需要的入口,出口参数较 BIOS 简单,调用也容易,方便,不需要编程者对硬件有更多的了解,通过调用 DOS ,还可以充分利用操作系统提供的所有功能,编制的程序可移植性也较高。与 BIOS 相比,DOS 完成的功能没有其丰富,即对于某些特殊的要求,DOS 调用也许不能实现,此外,DOS 调用的执行效率也比 BIOS 低。

应该使用哪种方法

    选择哪种方式应根据不同的需要来选择,首先必须是以完成任务为目的,一般按 DOS , BIOS 到硬件直接控制的顺序选择,另外,好的编程者还要根据程序应用的场合,权衡程序的可移植性,编程的复杂性和目标代码长短等因素选择相应的方式。

    此外,在选择 DOS 调用时,因注意操作系统的版本,一般的高版本的操作系统兼容低版本。

 

DOS 功能调用的一般步骤为:

1. 如有必要,装入入口参数到规定的寄存器;

2. 装入功能号到 AH 中;如有必要,装入子功能号到 AL 中;

3. 调用 DOS 相应功能的中断 ( 这里一般指 INT 21H );

4. 如有必要,取出返回结果或出错信息.