欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

16 位汇编 - DOS 功能调用(基本 I/O 功能调用)

最编程 2024-04-18 13:34:26
...

1.什么是DOS功能调用

程序员调用DOS操作系统提供的各种编号子程序 包括设备驱动(基本I/O)、文件管理和其他(包括内存管理,置取时间、置取中断向量、终止程序等)。

2.调用方法

  1. 根据需要调用准备入口参数,有部分功能不需要入口参数
  2. 把功能调用号送AH寄存器
  3. 发软中断指令“INT 21H”
例:
    mov dl,07h  ; 准备入口参数,当屏幕要显示的ASCII码为07h时
    mov ah,2	; 置功能调用号,2号功能,使喇叭发出'嘟'一声
    int 21h	; 实施调用

大部分功能调用都有出口参数,部分功能没有,比如上述2号功能 特殊情况,4CH号功能,返回操作系统,其入口参数为AL,该参数不影响程序的结束码

例:
    mov al,0   	; 置退出码
    mov ah,4ch 	; 置功能号调用
    int 21h   	; 实施调用

1.带回显键盘输入(1号功能调用)

功能:从标准输入设备上读一字符,并将该字符回显在标准输出设备上。如果键盘无字符可读,则一直等待到有字符可读(即按键)键盘,屏幕

入口参数:无

出口参数:AL=读到字符的ASCII码

说明:如果读到的字符是Ctrl+C或者Ctrl+Break,则结束程序

2.不带回显键盘输入(8号功能调用)

除了不显示外,和1号功能相同

3.直接键盘输入(7号功能调用)

功能:从标准输入上读一字符。如果键盘无字符可读,则一直等待到有字符可读(即按键)

入口参数:无

出口参数:AL=读到字符的代码

说明:

  1. 不检查读到的字符是否是Ctrl+C或者Ctrl+Break,则结束程序
  2. 不回显读到的字符

4.显示输出(2号功能调用)

功能:向标准输出设备写一字符。通常-屏幕

入口参数:DL=要输出的字符(ASCII码)

出口参数:无

说明:在显示输出时检查是否按Ctrl+C或Ctrl+Break键,如是则结束程序。

5.直接控制台输入输出(6号功能调用)

功能:直接控制台输入输出。键盘屏幕

入口参数:若dl=0ffh,表示输入,否则表示输出,DL=输出字符代码

出口参数:输入时,ZF=1表示无字符可读,ZF=0表示读到字符,AL=输入字符代码,输出时,无。

说明:

  1. 在输入时,如无字符可读,并不等待
  2. 不检查Ctrl+C或者Ctrl+Break键
  3. 在读到字符时也不回显
  4. 在输入时,如果AL=0,表示用户曾按过一个扩展键,在下次调用该功能时返回扩展键的扫描码
  5. 在输出时,不解释制表符等特殊控制符

6.显示字符串(9号功能键)

功能:在标准输出上显示一个字符串。屏幕

入口参数:DS:DX=需要输出字符串的首地址,字符串以‘$’为结束标志

出口参数:无

说明:在显示输出时检查是否按Ctrl+C或者Ctrl+Break,则结束程序

7.输入字符串(0AH号功能调用)

功能:从标准输入上读一个字符串。键盘

入口参数:接收到的输入字符串在缓冲区中

说明:

  1. 缓冲区第一字节为缓冲区最大容量,可认为是入口参数,缓冲区第二字节存放实际读入的字符(不包括回车符),可认为是出口参数的第一部分,第三部分开始存放接受的字符
  2. 字符串以回车键结束,回车符是接受到的字符串的最后一个字符
  3. 如果输入的字符超过缓冲区所容纳的最大字符数,则随后的输入字符被丢弃并且响铃,直到遇回车键为止。
  4. 如果输入时按Ctrl+C或者Ctrl+Break,则结束程序

8.取键盘输入状态(OBH号功能调用)

功能:判别在标准输入设备上是否有字符可读

入口参数:无

出口参数:AL=0,表示无字符可读 AL=0ffh,表示有字符可读

说明:检查是否按Ctrl+C或者Ctrl+Break,则结束程序DOS功能调用

9.清除输入缓冲区后再输入(OCH号功能调用)

功能:清除输入缓冲区,然后再执行某个输入功能

入口参数:AL=清除输入缓冲区后要执行的功能号

出口参数:决定于清除输入缓冲区后执行的功能

说明:清除缓冲区后执行的功能应是:01H、06H、07H、08H、或者0AH,如果不是这样,则不输入。例:若AL=0,则在清除输入缓冲区后,没有进一步的处理

10.打印输出(5号功能调用)

功能:向连接在第一个并行口上的打印机出一个字符

入口参数:DL=要打印的字符ASCII码

出口参数:无

说明:打印机可能不立即打印出指定的字符

推荐阅读