回 帖 发 新 帖 刷新版面

主题:DOS系统功能调用

1、什么是DOS系统功能调用 

    系统功能调用是DOS为用户提供的常用子程序(80多个),可在汇编语言程序中直接调用。这些子程序的

主要功能包括:
(1)设备管理(如键盘、显示器、打印机、磁盘等的管理)
(2)文件管理和目录操作
(3)其他管理(如内存、时间、日期等管理)
这些子程序给用户编程带来很大方便,用户不必了解有关的设备、电路、接口等方面的问题,只需直接调用即可。 

2、调用方法
DOS功能调用的子程序已按顺序编号——功能号(00H~68H),其调用方法是:
(1) 功能号→AH
(2) 入口参数→指定寄存器
(3) INT  21H
用户只须给出以上三方面信息,DOS就可根据所给信息自动转入相关子程序执行。 

3、常用的系统功能调用 

(1)键盘输入
1) 1号调用——从键盘输入单个字符
调用格式: MOV  AH,1
           INT  21H
功能: 等待从键盘输入一个字符并送入AL。
      执行时系统将扫描键盘,等待有健按下,一旦有健按下,就将其字符的ASCII码读入,先检查是否Ctrl-Break,若是,退出命令执行;否则将ASCII码送AL,同时将该字符送显示器显示。
 
2) 10号调用——从键盘输入字符串
功能: 从键盘接收字符串送入内存的输入缓冲区,同时送显示器显示。
调用前要求: 先定义一个输入缓冲区
    MAXLEN  DB  100     ;第1个字节指出缓冲区能容纳的字符个数,即缓冲区长度,不能为0
    ACLEN   DB  ?       ;第2个字节保留,以存放实际输入的字符个数
    STRING  DB  100 DUP(?)  ;第3个字节开始存放从键盘输入的字符串。                
调用格式: LEA  DX,MAXLEN(缓冲区首偏移地址)  
           MOV  AH,10
           INT  21H
注意:调用时,要求DS:DX指向输入缓冲区

(2)显示输出 
1) 2号调用——在显示器上显示输出单个字符
调用格式: MOV  DL,待显示字符的ASCII码
           MOV  AH,2
           INT  21H
功能:将DL中的字符送显示器显示。
【例】显示输出大写字母A  
           MOV  DL,41H    ;或写为 MOV  DL,'A' 
           MOV  AH,2
           INT  21H  
 
 2) 9号调用——在显示器上显示输出字符串
调用格式: LEA  DX,字符串首偏移地址   
           MOV  AH,9
           INT  21H
功能:将当前数据区中DS:DX所指向的以'$'结尾的字符串送显示器显示。
 3) 3C号调用——创建文件
     AH=3CH CX=文件属性 
     DS∶DX→ASCIIZ文件说明表所在段:偏移地址 
     若有错:置CF,AX=错误码
 4) 41号调用——删除文件
     AH=41H 
     DS∶DX→AXCIIZ文件说表明表所在段:偏移地址 
   若有错:置CF,AX=错误码
 5)  56号调用——修改文件名
     AH=56H 
     DS∶DX→原有ASCIIA文件说明表所段:偏移地址 
   ES∶DI→新ASCIIZ文件说明表所在段:偏移地址  
   若有错:置CF,AX=错误码
 
 6) 3D号调用——打开文件
     AH=3DH 
     DS∶DX→FCB所在段:偏移地址 AL=返回码
 7) 3E号调用——关闭文件
     AH=3EH 
     DS∶DX→FCB所在段:偏移地址 AL=返回码 
 8) 3F号调用——顺序读
    AH=3FH 
    DS∶DX→FCB所在段:偏移地址,读出数据 
    AL=返回码DTA含读出 
 9) 40号调用——顺序写
    AH=40H 
    DS∶DX→FCB所在段:偏移地址DTA含待写数据
  AL=返回码 

回复列表 (共1个回复)

沙发

谢谢,看了又多认识了几条调用指令;不过好像在加7号功能调用会更好一点
 7号调用——从键盘输入单个字符
 调用格式: MOV  AH,7
           INT  21H
 功能: 等待从键盘输入一个字符并送入AL中,但在屏幕上不显示输入的字符

我来回复

您尚未登录,请登录后再回复。点此登录或注册