1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,DOS功能调用,DOS,功能子程序调用,DOS,操作系统为程序设计人员提供了可以直接调用的功能子程序。调用这些子程序可以实现从键盘输入数据,将数据送显示器显示,以及磁盘操作等功能。,调用这些子程序时,需要使用软中断指令,INT 21H,,,并且在执行该指令之前,需要将要调用的功能号送入寄存器,AH,中,有关的参量送入指定的寄存器。,调用过程包括以下三个步骤:,*送入口参量给指定寄存器,*,AH=,功能号,*INT 21H,调用该功能子程序将等待键盘输入,直到按下一个键。将字符的,ASCII,码送入,
2、AL,寄存器,并在屏幕上显示该字符。如果是,Ctrl-C,组合键,则停止程序运行。如果是,TAB,键,屏幕上光标自动扩展到紧接着的,8,个字符位置后面,该功能调用无入口参量。,1,、带显示的键盘输入(,1,号功能),MOV AH,01H,INT 21H,2,、不带显示的键盘输入(,8,号功能),该功能调用与,1,号功能的作用相似,区别是,8,号功能将不显示输入的字符。调用方法为:,MOV AH,8,INT 21H,3,、不带显示的键盘字符输入(,7,号功能),MOV AH,,,7,INT 21H,4,、字符串输入(,0AH,号功能),该功能与,8,号功能相似,但对,Ctrl-C,组合键和,TA
3、B,制表键无反应。调用方法:,该功能调用可实现从键盘输入一个字符串,其长度可达,255,个字符。调用该功能前,应在内存中建立一个输入缓冲区。,缓冲区第一个字节是可输入的最大字符数,+1,;第二个字节是系统在调用该功能时,自动填入的本次调用时实际输入的字符个数;从第三个字节开始存放输入字符的,ASCII,码。,当用户输入回车键时,结束输入,并将回车键的,ASCII,码(,0DH,),作为最后一个字符送入缓冲区。但它不计入实际输入字符个数。,调用入口参量:,DS,:,DX,寄存器指向输入缓冲区的段基值:偏移量,CHAR_BUF DB 31H ;,缓冲区的最大长度,DB 0 ;,存实际输入字符数,D
4、B 31H DUP(0);,输入缓冲区,.,MOV DX,SEG CHAR_BUF;,如果,DS,已经指向,CHAR_BUF,所在,MOV DS,DX ;,数据段,则可以省去这两条指令,MOV DX,OFFSET CHAR_BUF,MOV AH,0AH,INT 21H,5,、字符显示(,2,号功能),该功能实现在屏幕上显示单个字符。,入口参数:,DL=,要显示字符的,ASCII,码。,例如:,MOV DL,A,MOV AH,,,2,INT 21H,6,、字符打印(,5,号功能),该功能将字符送入打印机接口,实现单个字符的打印操作。,入口参数:,DL=,打印字符的,ASCII,码,MOV DL,
5、A,MOV AH,5 INT 21H,7,、字符串显示(,9,号功能),该功能实现将一个字符串显示到屏幕上。,入口参数:,(,1,)将待显示的字符串存放在一个数据缓冲区,字符串以符号,“,$”,作为结束标志。,(,2,)将字符串的首址的段基值和偏移量分别送入,DS,和,DX,中,例如:,CHAR DB This is a test.,0AH,0DH,$,.,MOV DX,OFFSET CHAR,MOV AH,9,INT 21H,8,、直接输入输出(,6,号功能),例如:显示美圆符号,“,$”,(,24H,),的程序段为:,MOV DL,,,24H ;$,的,ASCII,码为,24H MOV
6、AH,,,06 INT 21H,该功能可以实现键盘输入,也可以实现屏幕显示操作。两种操作通过,DL,的内容确定。,(,1,)(,DL,),=000FEH,,,显示输出,如同,2,号功能。,DL,中是所显示字符的,ASCII,码。,(,2,)(,DL,),=FFH,,,从键盘输入字符,该功能的字符输入不等待键盘输入,而是从键盘缓冲区中读取(已输入字符,)。,读取的字符,ASCII,码送入,AL,中,如果没有键按下,则标志位,ZF=1,。,例如:,WAIT:MOV DL,0FFH,MOV AH,6,INT 21H,JZ WAIT,9,、读出系统日期(,2AH,号功能),读出的日期信息放入指定的寄存
7、器中:,CX,:,年(,19802099,),DH,:,月(,112,),DL,:,日(,131,),AL,:,星期(,0,星期日,,1,星期一,),YEAR DW?,MONTH DB?,DAY DB?,.,MOV AH,2AH,INT 21H,MOV YEAR,CX,MOV MONTH,DH,MOV DAY,DL,例如:,10,、设置系统日期(,2BH,号功能),该功能用来改变计算机,CMOS,中的系统日期。入口参数:,CX=,年号(,19802099,),DH=,月号(112),DL=,日(,131,),返回参数在,AL,中,成功设置,则返回,(AL)=0,,,否则(,AL,),=0FFH
8、MOV CX,2008,MOV DH,4,MOV DL,15,MOV AH,2BH,INT 21H,CMP AL,0,JNE ERROR;,转出错处理,.,例如:,11,、读出系统时间(,2CH,号功能),执行该功能将获得系统的当前时间。返回的时间参数存放在指定的寄存器中:,CH,:,小时(,023,),CL,:,分(,059,),DH,:,秒(,059,),DL,:,百分秒(,099,),HOUR DB?,MINUTES DB?,SECOND DB?,.,MOV AH,2CH,INT 21H,MOV HOUR,CH,MOV MINUTES,CL,MOV SECOND,DH,例如:,12,、设置系统时间(,2DH,号功能),调用该功能,将设定系统时间。其入口参数为:,CH,:,小时 (,023,),CL,:,分 (,059,),DH,:,秒 (,0-59,),DL,:,百分秒(,0-99,),该功能执行后返回时,如果调用成功,则(,AL,),=0,。,否则(,AL,),=0FFH,MOV CH,9,MOV DH,55,MOV DL,00,MOV AH,2DH,INT 21H,CMP AL,0,JNE ERROR;,转出错处理,.,例如:,