循环程序设计实验_第1页
循环程序设计实验_第2页
循环程序设计实验_第3页
循环程序设计实验_第4页
循环程序设计实验_第5页
全文预览已结束

下载本文档

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

文档简介

2 . 4 循 环 程 序 设 计 实 验实验目的1、掌握循环程序的设计方法。2、掌握比较指令、转移指令和循环指令的使用方法。3、进一步掌握调试工具的使用方法。实验预习要求1、复习比较指令、条件转移指令和循环指令。2、复习循环程序的结构、循环控制方法等知识。3、读懂“实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。4、根据“实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。5、从“实验习题”中任选一道题目,编写源程序,以便上机调试。实验内容计算

1+2+⋯⋯n=?,其中

n通过键盘输入。要求在屏幕上提供如下信息:Pleaseinputanumber(1627):1+2+⋯..n=sum

;出现此信息后通过键盘输入一个小于 628的无符号整数;其中n为用户输入的数, sum为所求的累加和程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个

32位二进制数所能表示的范围)。1、编程指导DATASEGMENTINF1DB"Pleaseinputanumber(0-65535):$"IBUFDB7,0,6DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETINF1MOVAH,09HINT21HMOVDX,OFFSETIBUF;键入一个十进制数(<65535)MOVAH,0AHINT21HMOVCL,IBUF+1;十进制数的位数送CXMOVCH,0MOVSI,OFFSETIBUF+2;指向输入的第一个字符(最高位)MOVAX,0;开始将十进制数转换为二进制数AGAIN:MOVDX,10;((010+a4)10+⋯)10+a0MULDXANDBYTEPTR[SI],0FHADD AL,[SI]ADCAH,0INCSILOOP AGAINMOV AH, 4CHINT 21HCODE ENDSENDSTART本程序功能:从键盘接收一个无符号十进制整数(小于 65535),将其转换为二进制数,转换结果存在 AX寄存器中。1)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数。将二进制数转换为十进制数的程序清单如下:DATASEGMENTOBUFDB6DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETOBUF+5MOVBYTEPTR[BX],'$'MOVCX,10;做(DX):(AX)/10运算LOOP1:MOVDX,0;被除数高16位清0DIVCXADDDL,30H;将DL中的一位十进制数转换为ASCII码DECBXMOV[BX],DLORAX,AXJNZLOOP1;判断商是否为0,不为0继续MOVDX,BXMOVAH,09H开始INT21H;显示转换得到的十进制数从键盘输入一个十进制数,并将其转MOVAH,4CH换为二进制数,存放在AX中INT21HCODEENDS累加循环次数送CX(MOVCX,AX)ENDSTARTAX清0(AX中存放累加和)本程序功能:将存储在AX寄存器中的二进制数转换为十BX送1(BX存放每次循环累加的数,进制数并显示。每循环一次,BX值加1)2、流程图及程序ADDAX,BX(1)流程图INCBX(2)实验代码:NDATASEGMENT(CX)-1=0INF1DB"Pleaseinputanumber(0-65535):$"YIBUFDB7,0,6DUP(?)累加和(在 AX中)转换为十进制数并显示结束OBUF DB6DUP(?)DATA ENDSCODE SEGMENTSSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETINF1MOVAH,09HINT21HMOVDX,OFFSETIBUFMOVAH,0AHINT21HMOVCL,IBUF+1MOVCH,0MOVSI,OFFSETIBUF+2MOVAX,0AGAIN:MOVDX,10MULDXANDBYTEPTR[SI],0FHADDAL,[SI]ADCAH,0INCSILOOPAGAINMOVCX,AXMOVAX,0MOVBX,1LOOP2:ADDAX,BXINCBXLOOPLOOP2MOVBX,OFFSETOBUF+5MOVBYTEPTR[BX],'$'MOVCX,0AHLOOP1:MOVDX,0DIVCXADDDL,30HDECBXMOV[BX],DLORAX,AXJNZLOOP1MOVDL,0AHMOVAH,02HINT21HMOVDX,BXMOVAH,09HINT21HMOVAH,4CHINT21HCODEENDSENDSTART(3)实验结果:实验习题1、 从自然数 1开始累加,直到累加和大于 60000为止,显示累加的自然数的个数和累加和。显示格式为:1+2+⋯+n=sum其中n为累加个数, sum为累加和。(1) 实验代码:DATASEGMENTOBUFDB6DUP(?)EUDB'+','$'EBDB0DH,'=',0DH,'$'DATAENDSDISPLAYMACROSTRINGMOVDX,OFFSETSTRINGMOVAH,09HINT21HENDMCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXMOVAX,1MOVCX,0LOOP1:ADCCX,AXCMPAX,1JEALLPUSHAXDISPLAYEUPOPAXALL:CALLEXCHANGEINCAXCMPCX,60000JCLOOP1PUSHAXPUSHCXDISPLAYEBMOVAX,CXCALLEXCHANGEPOPCXPOPAXMOVAH,4CHINT21HRETMAINENDPEXCHANGEPROCNEARPUSHAXPUSHBXPUSHCXMOVBX,OFFSETOBUF+5MOVBYTEPTR[BX],'$'MOVCX,10LOOP2:MOVDX,0DIVCXADDDL,30HDECBXMOV[BX],DLORAX,AXJNZLOOP2MOVDX,BXMOVAH,09HINT21HPOPCXPOPBXPOPAXRETEXCHANGEENDPCODEENDSENDSTART(

温馨提示

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

评论

0/150

提交评论