资源描述:
《DOS功能调用.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、DOS功能调用DOS功能子程序调用DOS操作系统为程序设计人员提供了可以直接调用的功能子程序。调用这些子程序可以实现从键盘输入数据,将数据送显示器显示,以及磁盘操作等功能。调用这些子程序时,需要使用软中断指令INT21H,并且在执行该指令之前,需要将要调用的功能号送入寄存器AH中,有关的参量送入指定的寄存器。调用过程包括以下三个步骤:*送入口参量给指定寄存器*AH<=功能号*INT21H调用该功能子程序将等待键盘输入,直到按下一个键。将字符的ASCII码送入AL寄存器,并在屏幕上显示该字符。如果是Ctrl-C组合键,则停止程序运行。如果是TAB键
2、,屏幕上光标自动扩展到紧接着的8个字符位置后面,该功能调用无入口参量。1、带显示的键盘输入(1号功能)MOVAH,01HINT21H2、不带显示的键盘输入(8号功能)该功能调用与1号功能的作用相似,区别是8号功能将不显示输入的字符。调用方法为:MOVAH,8INT21H3、不带显示的键盘字符输入(7号功能)MOVAH,7INT21H4、字符串输入(0AH号功能)该功能与8号功能相似,但对Ctrl-C组合键和TAB制表键无反应。调用方法:该功能调用可实现从键盘输入一个字符串,其长度可达255个字符。调用该功能前,应在内存中建立一个输入缓冲区。缓冲区
3、第一个字节是可输入的最大字符数+1;第二个字节是系统在调用该功能时,自动填入的本次调用时实际输入的字符个数;从第三个字节开始存放输入字符的ASCII码。当用户输入回车键时,结束输入,并将回车键的ASCII码(0DH)作为最后一个字符送入缓冲区。但它不计入实际输入字符个数。调用入口参量:DS:DX寄存器指向输入缓冲区的段基值:偏移量CHAR_BUFDB31H;缓冲区的最大长度DB0;存实际输入字符数DB31HDUP(0);输入缓冲区......MOVDX,SEGCHAR_BUF;如果DS已经指向CHAR_BUF所在MOVDS,DX;数据段,则可以省
4、去这两条指令MOVDX,OFFSETCHAR_BUFMOVAH,0AHINT21H5、字符显示(2号功能)该功能实现在屏幕上显示单个字符。入口参数:DL<=要显示字符的ASCII码。例如:MOVDL,‘A’MOVAH,2INT21H6、字符打印(5号功能)该功能将字符送入打印机接口,实现单个字符的打印操作。入口参数:DL<=打印字符的ASCII码MOVDL,‘A’MOVAH,5INT21H7、字符串显示(9号功能)该功能实现将一个字符串显示到屏幕上。入口参数:(1)将待显示的字符串存放在一个数据缓冲区,字符串以符号“$”作为结束标志。(2)将字符
5、串的首址的段基值和偏移量分别送入DS和DX中例如:CHARDB‘Thisisatest.’,0AH,0DH,’$’..........MOVDX,OFFSETCHARMOVAH,9INT21H8、直接输入输出(6号功能)例如:显示美圆符号“$”(24H)的程序段为:MOVDL,24H;$的ASCII码为24HMOVAH,06INT21H该功能可以实现键盘输入,也可以实现屏幕显示操作。两种操作通过DL的内容确定。(1)(DL)=00—0FEH,显示输出,如同2号功能。DL中是所显示字符的ASCII码。(2)(DL)=FFH,从键盘输入字符该功能的
6、字符输入不等待键盘输入,而是从键盘缓冲区中读取(已输入字符)。读取的字符ASCII码送入AL中,如果没有键按下,则标志位ZF=1。例如:WAIT:MOVDL,0FFHMOVAH,6INT21HJZWAIT9、读出系统日期(2AH号功能)读出的日期信息放入指定的寄存器中:CX:年(1980—2099)DH:月(1—12)DL:日(1—31)AL:星期(0—星期日,1—星期一……)YEARDW?MONTHDB?DAYDB?......MOVAH,2AHINT21HMOVYEAR,CXMOVMONTH,DHMOVDAY,DL例如:10、设置系统日期(2
7、BH号功能)该功能用来改变计算机CMOS中的系统日期。入口参数:CX<=年号(1980—2099)DH<=月号(1—12)DL<=日(1—31)返回参数在AL中,成功设置,则返回(AL)=0,否则(AL)=0FFHMOVCX,2008MOVDH,4MOVDL,15MOVAH,2BHINT21HCMPAL,0JNEERROR;转出错处理......例如:11、读出系统时间(2CH号功能)执行该功能将获得系统的当前时间。返回的时间参数存放在指定的寄存器中:CH:小时(0—23)CL:分(0—59)DH:秒(0—59)DL:百分秒(0—99)HOURD
8、B?MINUTESDB?SECONDDB?......MOVAH,2CHINT21HMOVHOUR,CHMOVMINUTES,CLMOV