微机原理及应用3-9_第1页
微机原理及应用3-9_第2页
微机原理及应用3-9_第3页
微机原理及应用3-9_第4页
微机原理及应用3-9_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.9DOS系统功能调用DOS微型计算机磁盘操作系统。系统功能调用是DOS为用户提供的一组常用子程序,它们的主要功能是驱动外部设备、进行I/O设备管理、文件管理及目录管理。3.9.1DOS系统功能调用方法

1、设置入口参数

2、将子程序编号送AH寄存器—MOVAH,子程序编号3、执行中断指令INT21H 调用后有出口参数时,一般在规定的寄存器中。有些调用结束后会在屏幕上看到结果。3.9.2常用DOS系统功能调用举例1、从键盘输入单个字符(1号调用)

调用格式:MOVAH,1INT21H

功能:等待从键盘输入一个字符,将其ASCII码送AL寄存器并送显示器显示。2、显示输出单个字符(2号调用)

调用格式:MOVDL,输出字符ASCII码MOVAH,2INT21H

功能:将DL中的字符送显示器显示。3、显示输出字符串(9号调用)

调用格式:LEADX,字符串首地址MOVAH,9INT21H

功能:将缓冲区中一组以‘$’结尾的字符串送显示器显示。例3.30DATASEGMENT

BUFDB‘IWISHYOUSUCCESS!$’DATAENDSCODESEGMENT....LEADX,BUFMOVAH,9INT21H….CODEENDS执行上述程序段后,屏幕显示:

IWISHYOUSUCCESS!4、键盘输入字符串(10号调用)

调用格式:LEADX,输入缓冲区首地址MOVAH,10INT21H

功能:从键盘输入一串字符,存入指定的内存缓冲区。说明:①事先要定义内存缓冲区,并注意:

第1字节定义最多输入的字符个数;

第2字节保留,调用结束时由系统写入实际输入字符的个数;

从第3字节开始预留内存空间,存放键入字符的ASCII码。②输入字符串以回车键表示结束。例3.31从键盘输入最多达50个字符的字符串,存入BUF 开始的输入缓冲区。DATASEGMENT

BUFDB50DB?DB50DUP(?)DATAENDSCODESEGMENT…LEADX,BUFMOVAH,10INT21H…CODEENDS5、返回操作系统(4CH调用)

调用格式:MOVAH,4CHINT21H

功能:结束当前正在执行的程序,返回操作系统。例.从键盘输入字符串并回显。

Ⅰ.显示‘Doyouwanttoinputastring?(Y/N)’;(09H功能)

Ⅱ.从键盘输入一个字符(Y/N),若是‘y’或‘Y’则执行Ⅲ,否则到Ⅶ结束;(01H功能)

Ⅲ.显示‘Pleaseinputstring!’;(09H功能)

算法Ⅳ.输入字符串到缓冲区(0AH功能);Ⅴ.在缓冲区输入的字符串后加结束符‘$’;Ⅵ.回显输入的字符串(09H功能);Ⅶ.结束。

注:回车——CR,0DH,使光标指向(本行)的首列;

换行——LF,0AH,使光标指向下一行。DATASEGMENTSTR1DB‘Doyouwanttoinputastring?(Y/N)’,0DH,0AH,‘$’

STR2DB‘Pleaseinputstring!’,0DH,0AH,‘$’;BUFFDB20H,00H,20HDUP(?);DATAENDSCODESEGMENT ASSUME CS:CODE,DS:DATASTART:MOVAX,DATA; MOVDS,AX;

MOVDX,OFFSETSTR1; MOVAH,09H; INT21H;

MOVAH,01H; INT 21H; CMP AL,’Y’; JE NEXT; CMP AL,’y’; JNE DONE;NEXT:MOV DX,OFFSETSTR2; MOV AH,09H; INT 21H;

MOV DX,OFFSETBUFF; MOV AH,0AH; INT 21H; MOV AL,BUFF+1;读字符串实长 MOVAH,0;扩展为字 LEA SI,BUFF+2;取字符串的首地址ADD SI,AX;指向字符串末单元 MOV BYTEPTR[SI],’$’;加结束符号

MOV DX,OFFSETBUFF+2; MOV AH,09H; INT 21H;DONE:MOVAH,4CH; INT 21H;CODE ENDS; END START;谢谢!

3.9DOS系统功能调用在DOS系统中,将那涉及设备驱动和文件管理等程序编写成相对独立的程序模块,存放在DOS系统中,并编上号。用户只要按照某种规定的格式进行调用,就可以很方便的使用这些子程序为自己编程服务。这些编了号的子程序就是DOS系统功能调用模块,调用这些模块就是DOS系统功能调用一.

DOS系统功能调用的格式

入口参数;由系统规定。

MOVAH,nn1;nn1为功能号, 规定调用的功能。INT21H;

21H为系统功能调用类型码,规定调用的类型为DOS系统功能调用。出口参数;由系统规定。例如:在屏幕上显示一个字符(如7)

MOVDL,37H

;入口参数

MOVAH,02H;02H为功能号,规定显示DL内的字符INT21H;结果在屏幕上显示字符‘7’,屏幕就是出口参数注意在执行DOS系统功能调用前,根据规定,看是否需要提供必要的入口参数。对于功能号,可参考书上361页附录4。这些功能号实际上就是DOS层功能模块所提供的子程序的编号。需要使用INT中断类型号(即21H),才能调用DOS提供的这些子程序,实际上这里用到了所谓的软中断指令INT。有些DOS子程序在执行后可能返回有关参数,即为出口参数,这些出口参数存放在一些指定的寄存器或者存储单元中。二.

DOS系统功能调用(类型码:21H)功能号功能 入口参数出口参数00H程序终止 无 无01H键盘输入并回显 无AL=输入字符02H显示字符 DL=输出字符03H异步通信输入 AL=输入字符04H异步通信输出DL=输出字符05H 打印机输出 DL=输出字符More..06H 直接控制台I/O二.

DOS系统功能调用(类型码:21H)功能号 功能 入口参数出口参数07H 键盘输入无回显 AL=输入字符08H 同上但要检测Ctrl-Break

09H显示字符串 DS:DX=串地址 ‘$’为字符串结束0AH 字符串输入 (见说明)4CH 返回DOS操作系统

Back..①AH=09H为显示字符串功能。

例如,显示STRING中字符串:

STRINGDB‘ABOY’,’$’;

则相关的程序段为:

MOVDX,OFFSETSTRING;取STRING的偏移地址

MOVAH,09H;

INT21H;DS:DX输出缓冲区

结束字符

‘A’‘’‘B’‘O’‘Y’‘$’三.重点强调:程序形式:datasegmentstringdb‘assemblelanguage!’,‘$’dataendscodesegmentassumecs:code,ds:datastart:……movdx,offsetstringmovah,09Hint21H……

②AH=0AH为从键盘输入字符串(P97)

入口参数:DS:DX=输入缓冲区首地址,而[DS:DX]的内容还表示输入缓冲区的总长;出口参数:[DS:DX+1]为输入字符串的实长(字符个数)DS:DX+0输入缓冲区+1+2实际输入的字符总长实长

算法例2,密码输入程序。a.提示“PleaseInputYourPassword.”b.用输入字符不回显方式一个一个输 入密码,每输入1位密位显示一个“*” 号;密位可以1~8位,不足8位时以 “回车”结束,满8位时自动结束。c.比较输入的密码。例2,密码输入程序。

算法密码错误,显示“Wrong,Again!”

重新输入输入密码。e.密码正确,转操作程序(以显示 “OK!”结束)。g.密码输入最多3次,3次均为错误 时显示“NO!”退出。BACK?主程序BL←03HSI←BUFF1偏输入密码(SUB1)比较密码(SUB2)密码对?BL-1≠0?显示“NO!”显示“OK!”显示“Wrong,Again!”ENDLOPYYNNDONEAGAINSUB1DI←BUFF2偏CX←08H输入字符存字符是否回车?DI←DI+1显示‘*’号CX-1≠0?RET输入密码子程序LOP1YNYDONE1NSUB2DI←BUFF2偏CX←取密位比较1个字符DI←DI+1是否不相同?SI←SI+1AL←00HCX-1≠0?RET比较密码子程序LOP2YNYDONE2NAL←0FFHSTACKSEGMENTSTACK DW256DUP(?);

TOPLABELWORD;STACKENDS;DATASEGMENTSTR1DB‘Pleaseinputyourpassword.’,0dh,0aH,‘$’;STR2DB‘Wrong,Again!’,0DH,0AH,‘$’;STR3DB‘OK!’,0DH,0AH,’$’;STR4DB‘NO!’,0DH,0AH,’$’;DAT1DW08H;密位BUFF1DB‘12345678’;密码BUFF2DB08HDUP(?);输入缓冲区DATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA; MOV DS,AX; MOV AX,STACK; MOV SS,AX; MOV SP,OFFSETTOP; MOV BL,03H; MOV SI,OFFSETBUFF1;LOP: MOVDX,OFFSETSTR1; MOVAH,09H; INT21H; CALL SUB1;调密码输入子程序 CALL SUB2;调密码

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论