如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第4章汇编语言程序设计4.3DOS系统功能调用4.3.1系统功能调用方法4.3.2常用的DOS系统功能调用1号系统功能调用(从键盘读入一个字符)2号系统功能调用(显示一个字符)9号系统功能调用(显示一个字符串)程序正常返回系统的方法【例】从键盘上读入一串指定长度的字符。(要求:只能用1号系统功能调用)。DATASEGMENTHLDB12DUP(0)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAGO:MOVAX,DATAMOVDS,AXMOVCX,12MOVSI,OFFSETHL【例4-7】编写一完整程序,在一行上输出5个*。CODESEGMENTASSUMECS:CODEGO:MOVCX,5MOVDL,'*'MOVAH,2L1:INT21HLOOPL1MOVAH,4CHINT21HCODEENDSENDGO【例4.8】试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。(要求:可连续输入)CODESEGMENTASSUMECS:CODEBEGIN:MOVAH,1INT21HCMPAL,’a’JBBEGINCMPAL,’z’JABEGINSUBAL,20HMOVDL,ALMOVAH,2INT21HJMPBEGINSTOP:MOVAH,4CHINT21HCODEENDSENDSTARTDATASEGMENTSTRDB0DH,0AH,’Howareyou!$'DATAENDSSTACKSEGMENTSTACKDB100DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,CS:CODE,SS:STACKBEGIN:MOVAX,DATAMOVDS,AXLEADX,STRMOVAH,9INT21HMOVAH,4CHINT21HCODEENDSENDBEGIN10号系统功能调用(从键盘读入一个字符串)格式:LEADX,缓冲区首地址;设DS已指向用户定义的数据段MOVAH,10;或0AHINT21H调用方法示例:……BUFDB20;定义缓冲区大小,实际可输入字符最多20-1个DB?;存放实际输入的字符个数,由系统自动设置DB20DUP(?);存放实际输入的字符串……以下指令序列将从键盘读入字符串(长度<80),并存入输入缓冲区buf中┆LEADX,BUFMOVAH,10INT21H程序执行时等待键盘输入,一旦按“回车键”输入字符及统计信息保存在缓冲区指定位置。假设输入:“ABCDEF回车”,内存图如下:【例4-11】从键盘上读入一串指定长度的字符,然后利用9号系统功能调用显示输出该串字符。(1#、2#、9#相结合)DataSEGMENTstrDB10DUP(0)DB'$‘dataendscodesegmentASSUMECS:code,DS:DataGO:MOVAX,DataMOVDS,AXMOVCX,10MOVSI,OFFSETstrL1:MOVAH,1INT21HMOV[SI],AL输入的字符串不包含结尾字符,所以应该自己定义。【例4-12】从键盘上读入一串指定长度的字符,然后利用9号系统功能调用显示输出该串字符。(9#、10#相结合)DataSEGMENTmessagedb'pleaseinputastring:$'bufDB50,?,50DUP(0)dataendscodesegmentASSUMECS:code,DS:DataGO:MOVAX,DataMOVDS,AXmovdx,offsetmessagemovah,9int21hmovdx,offsetbufmovah,10int21hmovah,2movdl,0ahint21h例4-16:datasegmentstr1db20,0,20dup(?)str2db3,0,3dup(?)dataendscodesegmentassumecs:code,ds:data,es:datastart:movax,datamovds,axmoves,axleadx,str1movah,0ah;movah,10int21hmovdl,0ahmovah,2int21hsearch:repnescasbjnznotexistmovdl,str2+3cmpes:[di],dljeexistjcxznotexistjmpsearchnotexist:movdl,'n'jmpdispexist:movdl,'y'disp:m