资源描述:
《实验4循环设计.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、汇编语言程序设计实验<四>1.循环程序设计实验1.1.目的(1)掌握循程序的方法。(2)掌握比指令、移指令和循指令的使用方法。(3)一步掌握工具的使用方法。1.2.要求(前完成)(1)复比指令、条件移指令和循指令。(2)复循程序的构、循控制方法等知。(3)懂“内容”中出的源程序,并完成程序,以便上机。(4)任一道“”写源程序,以便在行。1.3.内容算1+2+⋯+n=?,其中n通入,累加和小于216。要求在屏幕上提供如下信息:Pleaseinputanumber(1~627):1+2+⋯+n=sum其中,n累加个数,sum累加和。(1)程指①入的十制数,如368在算机中是以33H,36H,3
2、8H形式存放的,如何将它一个二制数101110000B,以便累加循的循次数行控制,是本程序首先要解决的。将入的十制数二制数的程序如下。DATASEGMENTINF1DB“Pleaseinputanumber(0-65535):$”IBUFDB7,0,6DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETINF1MOVAH,09HINT21HMOVDX,OFFSETIBUFMOVAH,0AHINT21HMOVCL,IBUF+1MOVCH,0MOVSI,OFFSETIBUF+2MOV
3、AX,0AGAIN:MOVDX,10MULDXANDBYTEPTR[SI],0FHADDAL,[SI]ADCAH,0INCSILOOPAGAINMOVAH,4CHINT21HCODEENDSENDSTART本程序功能:从键盘接收一个无符号十进制整数(小于制数,转换结果存放在AX寄存器中。65535),将其转换为二进②累加结果为一个16位的二进制数,为了显示结果,必须把它们转换为十进制数。将二进制数转换为十进制数的程序如下。DATASEGMENTOBUFDB6DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVD
4、S,AXMOVBX,OFFSETOBUF+5MOVBYTEPTR[BX],‘$’MOVCX,10LOOP1:MOVDX,0DIVCXADDDL,30HDECBXMOV[BX],DLORAX,AXJNZLOOP1MOVDX,BXMOVAH,09HINT21HMOVAH,4CHINT21HCODEENDSENDSTART本程序功能:将存放在AX寄存器中的二制数十制数并示。(2)源程序框架DATASEGMENTINF1DB“Pleaseinputanumber(0-65535):$”IBUFDB7,0,6DUP(?)OBUPDB6DUP(?)DATAENDSCODESEGMENTASSUMECS
5、:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX接收从入的十制数,并将其二制数(存AX寄存器)的指令序列MOVCX,AXMOVAX,0MOVBX,1LOOP2:ADDAX,BXINCBXLOOPLOOP2将AX中存放的二制数十制数并示的指令序列CODEENDSENDSTART1.4.实验习题①从自然数1开始累加,直到累加和大于加和。示格式如下:60000止,示累加的自然数的个数和累1+2+⋯+n=sum其中,n累加个数,sum累加和。②从入一个无符号十制数(小于65535),将其二制数,二制数中包含的1的个数,并将果在屏幕上示出来。③从入N个无符号十制整数(小于
6、256),将其二制数后存放在字量BUF存区中,N个数行由大到小排序,排序后将其仍存在BUF中,最后将排序后的果在屏幕上示出来。1.5.告要求㈠全“内容”中源程序框架内未写出的程序代,懂程序,并明在程序程中遇到了哪些,是如何理的。考如果入的数大于627会出什么,如何解决。㈡从“”中任一道目,画出流程,写源程序,并明在程中遇到了哪些,是如何理的。㈢写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题等。