翱翔天空♂鹏 » 日志 » 汇编中的DOS功能调用
汇编中的DOS功能调用
翱翔天空♂鹏 发表于 2008-11-18 10:21:25
DOS功能调用
系统功能调用是MS—DOS为程序员编写汇编语言源程序提供的一组子程序,包括设备管理、文件管理和目录管理等。
DOS规定使用软中断指令INT 21H作为进入各功能子程序的总入口,再为每个功能调用规定一个功能号,引用功能号即可进入相应的子程序入口。DOS系统功能调用的使用方法归纳如下:
(1) 传送入口参数到指定的寄存器中;
(2) 把要调用功能的功能号送入AH寄存器中;
(3) 用INT 21H指令转入子程序入口;
(4) 相应的子程序运行结束后,可以按照规定取得出口参数。
常用系统功能调用简介。
1 键盘输入单字符
这是1号系统功能调用,其调用格式为
MOV AH,1
INT 21H
该功能调用无入口参数。其功能为系统等待键盘输入,如是Ctrol-Break键则退出;否则将键入字符的ASCII码送入AL寄存器中,并且通过显示器显示该字符。
2 键盘输入字符串
这是0AH号系统功能调用,其功能为将键盘输入的字符串写入内存单元中。因此,首先在内存中定义一个缓冲区,缓冲区第一个字节存放规定字符串的最大字节数,第二个字节由系统送入实际键入的字符数,从第三个字节开始用于存放键入的字符串,最后通过键入回车键来表示字符串的结束。如果实际键入的字符数未达到最大规定数,其缓冲区的空余区间填0;如果实际键入数超过缓冲区的容量,则超出的字符自动丢失,而且响铃警告。注意,回车键值也存于缓冲区中。
例 3.75 使用格式举例。
·MODEL SMALL
·DATA
BUF DB 20
DB?
DB 20 DUP(?)
·CODE
·STARTUP
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H
·EXIT
END
该程序在BUF为首地址的缓冲区定义了20个字符串字节的缓冲区,并且将缓冲区首地址送入DX中,调用0AH号子程序,系统等待用户键入字符串,每键入一个字符,其相应的ASCII码将被写入缓冲区中,直到键入回车键,由系统输入实际键入字符数,送入缓冲区第二个字节中。
3 输出单字符
这是2号系统功能调用,其使用格式为:
MOV DL,‘A’
MOV AH,2
INT 21H
执行2号系统功能调用,将置入DL寄存器中的字符(以ASCII码形式表示)通过显示器显示出来(或从打印机输出)。
4 输出字符串
这是9号系统功能调用,其功能是将指定的内存缓冲区中的字符串从显示器显示输出(或从打印机输出),缓冲区中的字符串以字符‘$’作为结束标志。
例 3.76使用格式举例。
·MODEL SMALL
·DATA
BUF DB ‘Thank you $’
·CODE
·STARTUP
MOV DX,OFFSET BUF
MOV AH,9
INT 21H
·EXIT
END
5 返回操作系统
这是4CH号系统功能调用,使用格式为
MOV AH,4CH
INT 21H
在用户程序结束处插入此调用,则返回到DOS操作系统,显示器显示系统提示符。
