如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
将程序分段、采用子程序或宏结构都是进行模块化程序设计本节介绍开发大型程序时采用的方法:源程序文件的包含目标模块连接子程序库把源程序分放在几个文本文件中,在汇编时通过包含伪指令INCLUDE结合成一体INCLUDE文件名可将常用的子程序形成.ASM汇编语言源文件可将常用的宏定义存放在.MAC宏库文件中可将常量定义、声明语句组织在.INC包含文件中例4.21a①宏库文件lt421a.mac②主程序文件lt421a.asm③子程序文件sub421a.asmdispcharmacrochar;显示char字符movdl,charmovah,2int21hendmdispmsgmacromessage;显示message字符串movdx,offsetmessagemovah,9int21hendmincludelt421a.mac...dispmsgmsg1;提示输入数据movbx,offsetbufcallinput;数据输入cmpcx,0jestart4;没有输入数据则退出movcount,cx...;显示输入的数据...;数据排序...;显示经排序后的数据start4:.exit0includesub421a.asmend子程序源文件有3个子程序ALdisp;显示2位16进制数子程序(例4.10)sorting;排序子程序(例4.8)input;键盘输入子程序还包含一个宏convert;;将DX两位ASCII码转换为两位16进制数;键盘输入子程序;入口参数:ds:bx=存放数据的缓冲区;出口参数:cx=数据个数inputprocpushaxpushdxxorcx,cx;数据个数清0input01:xordx,dx;输入字符清0input02:movah,1;键盘输入一个字符int21hinput10:cmpal,0dhjeinput30;是回车,结束整个数据的输入cmpal,’’jeinput20;是空格和逗号,确认输入了一个数据cmpal,’,’jeinput20cmpal,08hjeinput17;是退格,丢弃本次输入的数据,出错cmpal,’0’;有效数字判断(图4.5b)jbinput17;小于’0’,不是有效数字,出错cmpal,’f’jainput17;大于’f’,不是有效数字cmpal,’a’jbinput11subal,20h;’a’~’f’转换成大写’A’~’F’jmpinput12input11:cmpal,’F’jainput17;字符小于’a’、大于’F’,出错cmpal,’A’jaeinput12;是’A’~’F’,有效字符cmpal,’9’jainput17;是’0’~’9’,有效字符input12:cmpdl,0;有效字符的处理jneinput13movdl,al;dl=0,输入了一个数据的低位,则dl←aljmpinput02;转到字符输入input13:cmpdh,0jneinput17;dl≠0,dh≠0输入3位数据,出错movdh,dl;dl≠0,dh=0输入了一个数据的高位movdl,al;dh←dl,dl←aljmpinput02;转到字符输入input17:movdl,7;输入错误处理movah,2int21hmovdl,'?'movah,2int21hjmpinput01;转到输入一个数据;转换正确的输入数据(图4.5c)input20:convertjmpinput01;转到输入一个数据input30:convertpopdxpopaxret;返回,出口参数已设定inputendp;;将DX两位ASCII码转换为两位16进制数(图4.5c)convertmacrolocalinput21,input22localinput24,input25cmpdl,0;;dl=0,没有要转换的数据,退出jeinput25cmpdl,'9'jbeinput21subdl,7;;字符A~F,则减7input21:anddl,0fh;;转换低位cmpdh,0;;dh=0,没有高位数据jeinput24cmpdh,'9'jbeinput22subdh,7input22:shldh,1shldh,1shldh,1shldh,1;;