DOS功能调用详解:控制键盘、磁盘与文件操作

3星 · 超过75%的资源 需积分: 13 28 下载量 39 浏览量 更新于2024-12-25 收藏 130KB DOC 举报
"DOS功能调用是一系列在MS-DOS操作系统中用于与系统进行交互的低级函数。这些调用提供了对硬件、输入输出设备、文件管理等基本操作的直接控制。通过设置AH寄存器的值来选择不同的功能,然后提供相应的参数,并将结果保存在返回参数中。以下是对一些主要DOS功能调用的详细说明: 1. **程序终止** (AH=00): 用于终止当前运行的程序,类似于INT 20H中断。 2. **键盘输入并回显** (AH=01): 获取用户输入的单个字符,并将其显示在屏幕上。AL寄存器接收输入字符。 3. **显示输出** (AH=02): 在屏幕上输出一个字符,由DL寄存器提供。 4. **异步通信输入/输出** (AH=03/04): 用于非同步通信设备的输入和输出,如串行端口。 5. **打印机输出** (AH=05): 打印一个字符,字符由DL寄存器提供。 6. **直接控制台I/O** (AH=06): 直接控制输入输出,可以用于读取或写入字符到控制台。AL寄存器用于接收输入字符。 7. **键盘输入(无回显)** (AH=07): 获取用户输入的字符而不显示,AL寄存器接收输入字符。 8. **检测Ctrl-Break** (AH=08): 检测是否有Ctrl-Break事件,AL寄存器返回输入状态。 9. **显示字符串** (AH=09): 在屏幕上打印字符串,字符串地址由DS:DX提供,直到遇到'$'字符为止。 10. **键盘输入到缓冲区** (AH=0A): 将用户输入的字符存入指定缓冲区,缓冲区信息由DS:DX提供。 11. **检验键盘状态** (AH=0B): 检查是否有键被按下,AL寄存器返回状态(0表示有输入,FF表示无输入)。 12. **清除输入缓冲区** (AH=0C): 清除键盘输入缓冲区,AL寄存器可用于指定其他输入功能。 13. **磁盘复位** (AH=0D): 清除文件缓冲区,有助于解决磁盘上的问题。 14. **指定当前缺省磁盘驱动器** (AH=0E): 改变当前工作驱动器,DL寄存器包含驱动器号。 15. **打开文件** (AH=0F): 使用FCB(文件控制块)打开文件,AL寄存器返回操作结果。 16. **关闭文件** (AH=10): 关闭由FCB指定的文件,AL寄存器返回关闭状态。 17. **查找第一个目录项** (AH=11): 从目录中查找第一个符合FCB条件的文件,AL寄存器返回查找结果。 18. **查找下一个目录项** (AH=12): 继续查找目录中的下一个文件,AL寄存器返回查找结果。 19. **删除文件** (AH=13): 删除由FCB指定的文件,AL寄存器返回删除状态。 20. **顺序读/写** (AH=14/15): 对文件进行顺序读取或写入,FCB地址由DS:DX提供,AL寄存器返回操作状态。 21. **随机读/写** (AH=21/22): 对文件进行随机访问读取或写入,FCB地址由DS:DX提供,AL寄存器返回操作状态。 22. **测定文件大小** (AH=23): 获取文件的大小,FCB地址由DS:DX提供,AL寄存器返回操作结果。 23. **设置随机记录号** (AH=24): 设置随机访问文件的位置,FCB地址由DS:DX提供。 24. **设置中断向量** (AH=25): 修改或设置中断向量,中断类型号在AL寄存器中。 25. **建立程序段前缀** (AH=26): 更新当前程序段前缀,新的前缀由DX寄存器提供。 26. **随机分块读/写** (AH=27/28): 对文件进行随机分块的读取或写入,FCB地址由DS:DX提供,AL寄存器返回操作状态。 27. **分析文件名** (AH=29): 分析文件路径,返回文件类型信息,ASCIIZ字符串在DS:DX提供,AL寄存器返回分析标志。 28. **取日期** (AH=2A): 获取系统日期,返回值在CX、DH和DL寄存器中。 29. **设置日期** (AH=2B): 设置系统日期,输入值在CX、DH和DL寄存器中,AL寄存器返回设置结果。 30. **取时间** (AH=2C): 获取系统时间,返回值在CH、CL、DH和DL寄存器中。 31. **设置时间** (AH=2D): 设置系统时间,输入值在CH、CL、DH和DL寄存器中,AL寄存器返回设置结果。 32. **置磁盘自动读写标志** (AH=2E): 控制磁盘驱动器的自动读写功能,AL寄存器设置或获取标志。 33. **取磁盘缓冲区首址** (AH=2F): 获取磁盘缓冲区的地址,结果在ES:BX寄存器中。 34. **取DOS版本号** (AH=30): 获取DOS的发行号和版本号,结果在AH和AL寄存器中。 35. **结束并驻留** (AH=31): 结束程序但保留其在内存中,AL和DX寄存器分别用于返回码和驻留区大小。 36. **Ctrl-Break检测** (AH=33): 检测或设置Ctrl-Break状态,AL寄存器用于操作,DL寄存器用于设置状态。 37. **取中断向量** (AH=35): 获取指定中断的向量,中断类型号在AL寄存器中,结果在ES:BX寄存器中。 38. **取空闲磁盘空间** (AH=36): 获取指定驱动器的空闲磁盘空间信息,结果在AX、BX、CX和DX寄存器中。 39. **建立子目录** (AH=39): 创建一个新的子目录,子目录名由DS:DX提供,AX寄存器返回错误码。 40. **删除子目录** (AH=3A): 删除指定的子目录,子目录名由DS:DX提供,AX寄存器返回错误码。 41. **改变当前目录** (AH=3B): 改变当前工作目录,新目录路径由DS:DX提供,AX寄存器返回错误码。 42. **建立文件** (AH=3C): 创建新文件,文件名由DS:DX提供,CX包含文件属性,AX寄存器返回文件代号或错误码。 43. **打开文件** (AH=3D): 打开现有文件,文件名由DS:DX提供,AL指示打开模式,AX寄存器返回文件代号或错误码。 44. **关闭文件** (AH=3E): 关闭指定文件代号的文件,BX寄存器包含文件代号,错误码在AX寄存器中。 45. **读文件或设备** (AH=40): 从文件或设备中读取数据,DS:DX为缓冲区地址,BX为文件代号,CX为读取字节数,AL寄存器返回读取状态。 46. **写文件或设备** (AH=41): 向文件或设备写入数据,DS:DX为缓冲区地址,BX为文件代号,CX为写入字节数,AL寄存器返回写入状态。 47. **删除文件** (AH=42): 删除指定文件,文件名由DS:DX提供,AX寄存器返回错误码。 48. **移动文件指针** (AH=42): 移动文件指针,BX为文件代号,CX:DX为位移量,AL指定移动方式,DX:AX返回新文件指针位置。 49. **置/取文件属性** (AH=43): 设置或获取文件属性,文件名由DS:DX提供,AL指定操作,CX用于输入/输出文件属性。 50. **设备文件I/O控制** (AH=44): 控制设备的I/O操作,BX为文件代号,AL指定操作类型,DX用于输入/输出设备信息。 51. **复制文件代号** (AH=45): 复制一个文件代号,BX为源文件代号,AX返回目标文件代号。 52