实验五 简单 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
出口参数 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. 如有必要,取出返回结果或出错信息.