汇编语言——DOS功能调用和BIOS功能调用

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功能调用:

  1. 带显示的键盘输入单字符(01H号功能调用)
    格式:

    MOV AH, 01H
    INT 21H
    

    功能: 从标准输入设备上读入一个字符,将字符的 ASCII 码送入 AL 中,并在屏幕上显示该字符。如读到 Ctrl+C 或 Ctrl+Break ,则结束程序

    输入参数:

    输出参数: AL = ASCII 码

  2. 单字符显示(02H号功能调用)

    格式:

    MOV DL, '字符'
    MOV AH, 02H
    INA 21H
    

    功能: 将置入 DL 中的字符在标准输出设备(显示屏)上显示输出;入口参数为字符的 ASCII 码,写入 DL 中。

    输入参数: DL = ASCII 码

    输出参数:

    ①从键盘上输入的字符,在计算机的寄存器或内存单元中是以字符对应的ASCII 码( 即二进制)存放的。所以,从键盘输入的数据并不是数据本身,要进行ASCII 到十六进制的转换。② 同样,计算结果输出在屏幕上,也得先将其数据转换成ASCII 码。

  3. 键盘输入字符串(0AH号功能调用)

    格式:

    MOV DX, 缓冲区偏移量
    MOV AH, 0AH
    INT 21H
    

    功能: 从键盘接收一串字符,以回车作为键盘输入结束标志,多个字符输入到缓冲区。

    输入参数: DS : DX = 输入缓冲区首地址。

    输出参数: DS : DX = 输入字符串所在缓冲区地址。

    设置缓冲区要注意以下几点:

    • 缓冲区第 1 字节存放预定字符个数,最多 255 个。如果键入的字符数比此数大,就会发出提示
    • 缓冲区第 2 字节保留,用于调用返回时存放实际输入的字符个数。
    • 缓冲区第 3 字节开始,存放输入的字符。最后键入回车键表示字符串结束
    • 缓冲区要考虑留 1 字节作为回车符。所以缓冲区的字节空间应为最大字符数+2
  4. 字符串输出(09H号功能调用)

    格式:

    MOV DX, 存放字符串的偏移地址
    MOV AH, 09H
    INT 21H
    

    功能: 多个字符输出到屏幕显示

    输入参数: DS : DX = 输出字符缓冲区首地址

    输出参数:

    该功能对输出字符的个数没有要求,但输出字符串要以 ‘$’ 结束。

  5. 返回操作系统(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功能调用

  1. 00H 号功能调用

    MOV AH, 00H
    MOV AL, 显示模式号
    INT 10H
    

    功能: 用于设置显示方式,显示模式号为00~13H,可选择分辨率、模式、颜色、行列数等

  2. 02H 号功能调用

  3. 0AH 号功能调用

BIOS 调用与DOS 调用之间的关系

  • DOS 建立在 BIOS 的基础上,通过 BIOS 可操控硬件
  • DOS更简单
  • BIOS 程序执行效率比 DOS 更高
  • 有些 DOS 无法完成的需要 BIOS 调用来完成

猜你喜欢

转载自blog.csdn.net/weixin_43229030/article/details/107294376