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