IN 21H 调用 DOS 功能

IN 21H 调用 DOS 功能

DOS (Disk Operation System)和 BIOS(Basic Input and Output System)是为用户提供的两组系统服务程序

  • BIOS 是 IBM PC/XT 的基本 I/O 系统,负责管理系统的测试程序、初始化引导程序、一部分中断矢量装入程序以及外部设备的服务程序,用户可以直接调用

  • DOS 是 IBM PC/XT 的操作系统,负责管理系统的所以资源,协调微机的操作,其中包括大量的可供调用的服务子程序,完成设备的管理和磁盘文件的管理

  • 用户控制 PC 机硬件的方法:
    高级语言–>调用 DOS 程序 --> 使用 BIOS 程序 --> 直接访问硬件

  • DOS 功能/ BIOS 功能调用是调用系统内核子程序

  • DOS 功能与BIOS 功能均通过 中断方式调用

  • DOS 为程序设计者提供了许多可直接调用的功能子程序,这些功能子程序的主要功能是:
    (1)磁盘的读写、控制
    (2)内存管理、文件操作、目录操作
    (2)基本输入输出管理(如键盘、打印机、显示器、磁带等管理),另外还有时间、日期等子程序

  1. 调用方法
    为了使用方便,所有子程序已按序编号–功能号,从 00H ~ 68H,调用方法:
    (1)入口参数送指定寄存器
    (2)功能号送 AH
    (3)INT 21H
    有的子程序不要入口参数,但大部分需要将参数送人指定地点

  2. 基本功能调用

功能号 作用
1 键盘输入
5 打印输出
6 直接控制台输入/输出
9 输出字符串
0AH 字符串输入
2B 日期设置

(1)键盘输入 (1 号调用
功能:等待从标准输入设备输入一个字符并送人寄存器 AL,不需要入口参数
例如:
MOV AH , 1
INT 21H
执行上述指令,系统将扫描键盘,等待有键按下,一旦有键按下,就将键值(相应字符的 ASCII 码值)读入,先检查是否是 Ctrl-Break ,若是,则退出命令执行;否则将键值送人 AL 寄存器,同时将这个字符显示在屏幕上

(2)打印输出(5 号调用
功能:把 DL 中的字符输出到打印机上
例如:
MOV DL, ‘A’
MOV AH, 5
INT 21H

(3)直接控制台输入/输出(6 号调用
功能:可以从标注输入设备输入字符,也可以向屏幕输出字符。但不检查 Ctrl-Break
例如:
当 DL = FFH 时,表示从键盘输入,

  • 若标志 ZF = 0 ,表示 AL中为键入的字符值
  • 若标志 ZF = 0 ,表示 AL 中不是键入的字符值,即尚无键按下
    当 DL != FFH 时,表示向屏幕输出,DL 中为输出字符的 ASCII 码,
    MOV DL , 0FFH
    MOV AH, 6
    INT 21H
    即为从键盘输入字符

(4)输出字符串(9 号调用
调用时,要求 DS : DX 必须指向内存中一个以 “ $ ” 作为结束标志的字串中每一个字符(不包括结尾标志 $ )都输出显示或打印
例如:
DATA SEGMENT
BUF DB ‘ABCDEFGHIJ$’
.
.
.
DATA ENDS
CODE SEGMENT
.
.
MOV AX, DATA
MOV DS, AX
.
.
MOV DX, OFFSET BUF
MOV AH, 9
INT 21H
.
.
CODE ENDS
执行本程序,屏幕将显示:ABCDEFGHIJ

(5)字符串输入(0AH 号调用
从键盘接收字符串到内存输入缓冲区。要求事先定义一个输入缓冲区,缓冲区内第一个字节指出缓冲区能容纳的字符个数,不能为零。第二个字节保留以用作填写输入的字符个数。从第三个字节开始存放从键盘上接收的字符。若实际输入的字符数少于定义的字节数,缓冲区内其余字节填零,若多于定义的字节数,则后来输入的字符丢掉,且响铃
调用时,要求 DS : DX 指向输入缓冲区
例如:
DATA SEGMENT
BUF DB 100 ;缓冲区长度
DB ? ;保留为填入实际输入的字符个数
DB 100 DUP (?) ; 定义 100 个字节存储空间
.
.
DATA ENDS
CODE SEGMENT
.
.
MOV AX , DATA
MOV DS , AX
.
.
MOV DX , OFFSET BUF
MOV AH , 10
INT 21H
.
.
CODE ENDS

(6)日期设置(2BH 调用
调用时, CX : DX 中必须有一个有效的日期,CX 中存放年号(1980 ~ 2099),DH 中存放月号(1 ~ 12),DL 中放日号,若日期有效,设置成功,AL = 0 ;否则 AL = 0FFH
例如:下列程序可把日期设置为 2000 年 10 月 1 日
MOV CX ,2000
MOV DH ,10
MOV DL , 1
MOV AH , 2BH
INT 21H

猜你喜欢

转载自blog.csdn.net/ww7510/article/details/82914772