DOS功能调用.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:13 大小:23KB 金币:18 举报 版权申诉
预览加载中,请您耐心等待几秒...

DOS功能调用.doc

DOS功能调用.doc

预览

免费试读已结束,剩余 3 页请下载文档后查看

18 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

4.3.7DOS系统功能调用系统功能调用系统功能调用在我们的程序中,总会有数据的输入和输出.实现数据的输入与输出将涉及输入,输出设备的管理,而对输入,输出设备管理的具体操作是十分繁琐的,好在系统为我们提供了方便.实际上,无论是用户程序还是DOS系统本身,都离不开输入,输出操作,PCDOS系统将输入,输出管理程序编写成一系列子程序,不仅系统可以使用,用户也可以像调子程序一样方便地使用它们.在IBMPC系统中,除了DOS系统中有一组输入,输出子程序可供用户调用外,在系统的ROM中也有一组输入,输出管理程序可供用户使用,这组程序通常称为ROMBIOS(ROMInput/OutputSystem).调用系统提供的子程序,通常称为系统功能调用.功能调用的基本方法是采用一条软中断指令INTn.所谓软中断是以指令的方式产生的中断,当CPU执行该指令时,就像响应外部中断一样的方式转入中断处理程序,中断处理程序结束后又返回到INT指令的下一条指令处.指令中的n为中断类型号,不同的n将转入不同的中断处理程序.所以,系统所提供的处理输入,输出的子程序是以中断处理程序的方式编写的.关于中断和如何转向中断处理程序以及中断处理程序的结构,将在第10章中详细介绍.本节将主要说明与基本输入,输出有关的DOS系统功能调用的调用方式及其用途,目的是为程序设计中实现输入,输出操作打下基础.DOS系统功能调用主要是由软中断指令INT21H实现的,这是一条功能极强的指令.当累加器AH中设置不同的值时,指令将完成不同的功能,我们称AH中设置的内容为功能号.该指令的功能大体可分为输入,输出设备管理,件管理及目录管理三个方面.这里,我们主要介绍输入,输出设备管理的功能及调用方式,DOS功能调用的其余功能请参阅附录B.下面给出AH中设置的值与其对应的功能关系.(1)(AH)=01H时,为键盘输入.等待并从标准输入设备(如键盘)读入一个字符,将其送到寄存器AL中和标准输出设备上.同时,检查该字符是否为CTRLBREAK,若是,则执行一条INT23H指令,即终止正在执行的程序,返回DOS系统.(2)(AH)=02H时,为字符输出.将寄存器DL中的字符输出到标准输出设备上.如果检测到CTRLBREAK就执行INT23H指令.(3)(AH)=03H时,为异步通讯输入.等待从串行通讯接口输入一个字符(一个字节的数据),并将该字符送入寄存器AL.(4)(AH)=04H时,为异步通讯输出.把寄存器DL中的一个字符送到串行通讯接口输出.关于串行通讯接口的有关问题,将在后面章节介绍.(5)(AH)=05H时,为打印机输出.把寄存器DL中的字符送入标准打印机接口.(6)(AH)=06H时,为直接控制台输入/输出.此功能可以实现输入也可以实现输出.若要求进行输入操作,则调用前应将0FFH送入DL寄存器,在INT21H指令执行结束后,有两种可能:如果标志位ZF=0,则表示AL中为当前输入的字符;如果ZF=1,则说明输入设备没有准备好,并且把00送入AL.若要求进行输出操作,则寄存器DL中送除0FFH外的其它值,此时,执行INT21H指令后,将把寄存器DL的内容送标准输出设备输出.(7)(AH)=07H时,读键盘但不显示.此功能与功能1((AH)=01)基本相同,不同的只是读入的字符不送显示器显示,也不检查CTRLBREAK的输入.(8)(AH)=08H时,读键盘但不显示.此功能与功能7基本相同,不同的是它检查CTRLBREAK,从而可以由此组合键停止输入.(9)(AH)=09H时,为输出字符串.将缓冲区中的一组以'$'结束的字符串送标准输出设备输出.在调用前必须将输出缓冲区的首地址送DS:DX.(10)(AH)=0AH时,为输入字符串.前面的键盘输入功能实现单个字符的输入,本功能可以实现将一串字符读入并将它们送入指定的输入缓冲区.输入前必须将输入缓冲区的首地址送入DS:DX.该缓冲区中的第1个字节的内容不能为零,它应指出该缓冲区的大小(缓冲内可包含的字节数).第2字节用来记录实际输入的字节数,第3个字节开始才存放输入的字符串.字符从标准输入设备输入,并送入输入缓冲区,直到输入回车(ENTER)时为止.当输入的字符数达到缓冲区大小减1时,随后读入的字符均被忽略,直到读入回车符为止.(11)(AH)=0BH时,为检查标准输入设备的状态.如果从标准设备上读入的字符是有效的,AL的内容将是0FFH,否则AL的内容为00.如果检测到CTRLBREAK,就执行INT23H指令.本功能并不读入字符,仅用作检查,当(AL)=0FFH时,表示有一字符正等待输入.(12)(AH)=0CH时,清除标准输入缓冲区,然后执行AL中所指出的功能号,AL中的功能号可以为01,06,07,