DOS功能调用
MS-DOS(disk operating system)系统功能调用是DOS为程序员编写汇编语言源程序提供了一组常用子程序(80多个),可在汇编语言程序中直接调用。这些子程序的主要功能包括:
(1)设备管理(如键盘、显示器、打印机、磁盘等的管理)
(2)文件管理和目录操作
(3)其他管理(如内存、时间、日期等管理)
这些子程序给用户编程带来很大方便,用户不必了解有关的设备、电路、接口等方面的问题,只需直接调用即可。
MS-DOS 规定用INT 21H
进入各功能调用子程序的入口,并为每个功能调用规定了一个功能号,以便进入各个相应子程序的入口。
DOS功能调用的子程序已按顺序编号——功能号(00H~68H),其调用方法是:
(1) 功能号→AH(根据要使用的DOS功能调用设置入口参数)
(2) 入口参数→指定寄存器(将DOS功能调用的编号送入寄存器AH)
(3) 发送软中断指令 INT 21H
调用结束后,系统将出口参数送到指定寄存器、内存或直接送到输出设备
常见DOS功能调用:
-
带显示的键盘输入单字符(01H号功能调用)
格式:MOV AH, 01H INT 21H
功能: 从标准输入设备上读入一个字符,将字符的 ASCII 码送入 AL 中,并在屏幕上显示该字符。如读到 Ctrl+C 或 Ctrl+Break ,则结束程序
输入参数: 无
输出参数: AL = ASCII 码
-
单字符显示(02H号功能调用)
格式:
MOV DL, '字符' MOV AH, 02H INA 21H
功能: 将置入 DL 中的字符在标准输出设备(显示屏)上显示输出;入口参数为字符的 ASCII 码,写入 DL 中。
输入参数: DL = ASCII 码
输出参数: 无
①从键盘上输入的字符,在计算机的寄存器或内存单元中是以字符对应的ASCII 码( 即二进制)存放的。所以,从键盘输入的数据并不是数据本身,要进行ASCII 到十六进制的转换。② 同样,计算结果输出在屏幕上,也得先将其数据转换成ASCII 码。
-
键盘输入字符串(0AH号功能调用)
格式:
MOV DX, 缓冲区偏移量 MOV AH, 0AH INT 21H
功能: 从键盘接收一串字符,以回车作为键盘输入结束标志,多个字符输入到缓冲区。
输入参数: DS : DX = 输入缓冲区首地址。
输出参数: DS : DX = 输入字符串所在缓冲区地址。
设置缓冲区要注意以下几点:
- 缓冲区第 1 字节存放预定字符个数,最多 255 个。如果键入的字符数比此数大,就会发出提示
- 缓冲区第 2 字节保留,用于调用返回时存放实际输入的字符个数。
- 缓冲区第 3 字节开始,存放输入的字符。最后键入回车键表示字符串结束
- 缓冲区要考虑留 1 字节作为回车符。所以缓冲区的字节空间应为最大字符数+2
-
字符串输出(09H号功能调用)
格式:
MOV DX, 存放字符串的偏移地址 MOV AH, 09H INT 21H
功能: 多个字符输出到屏幕显示
输入参数: DS : DX = 输出字符缓冲区首地址
输出参数: 无
该功能对输出字符的个数没有要求,但输出字符串要以 ‘$’ 结束。
-
返回操作系统(4CH号功能调用)
过程终止调用的功能是结束当前程序,并且返回调用它的程序。如果在 DEBUG 状态下运行,则返回 DEBUG ; 如果在 DOS 下运行,则返回 DOS 。在汇编语言程序结束处加上:
MOV AX ,4CH INT 21H
两条指令,以利于程序执行完毕,返回操作系统控制。
BIOS 功能调用
BIOS(Basic input/output system)固化在 ROM 中,包括 I/O 设备的处理程序和许多常用的例行程序。
对用户程序来说,可由特定指令 INT n(n 为中断号)通过软终端的方式调用。不管 DOS 是否装入系统,这些调用可以直接控制 I/O 设备。
主要的 BIOS 功能调用如下:
中断号 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
---|---|---|---|---|---|---|---|---|
功能 | 视频服务 | 设备类型 | 内存容量 | 磁盘 I/O | 串行口 | 磁带 I/O | 键盘 | 打印机 |
举例:INT 10H ;视频服务BIOS功能调用
-
00H 号功能调用
MOV AH, 00H MOV AL, 显示模式号 INT 10H
功能: 用于设置显示方式,显示模式号为00~13H,可选择分辨率、模式、颜色、行列数等
-
02H 号功能调用
-
0AH 号功能调用
等
BIOS 调用与DOS 调用之间的关系
- DOS 建立在 BIOS 的基础上,通过 BIOS 可操控硬件
- DOS更简单
- BIOS 程序执行效率比 DOS 更高
- 有些 DOS 无法完成的需要 BIOS 调用来完成