资源描述:
《微机原理与接口技术实验指导_4_循环程序设计实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、2.4循环程序设计实验2.4.1实验目的1、掌握循环程序的设计方法。2、掌握比较指令、转移指令和循坏指令的使用方法。3、进一步掌握调试工具的使用方法。2.4.2实验预习要求1、复习比较指令、条件转移指令和循环指令。2、复习循环程序的结构、循环控制方法等知识。3、读懂“2.4.3实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。4、根据“2.4.3实验内容”屮给出的流程图和程序框架编写源程序,以便上机调试。5、从“2.4.4实验习题”屮任选一道题目,编写源程序,以便上机调试。2.4.3实验内容计算1+2+……n=?,其中n通过键盘输入。要求在屏幕上提供如
2、下信息:Pleaseinputanumber(1-627):;出现此信息后通过键盘输入一个小于628的无符号整数1+2+n=sum;其屮n为用户输入的数,sum为所求的累加和程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。1、编程指导(1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数MS-DOS方式8x12^J□囤團囹
3、創百A]阪D:exbook>ex24+n5值明.计篦结果在屏幕上显示.按任老建继续执行程库请输入n值(最大的—个数■贰范国为0001—40001:3000•
4、3000的和为:4501500D:exbook>1+2+3+101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。将键盘输入的十进制数转换为二进制数的程序清单如下:DATASEGMENTINF1DB"Pleaseinputanumber(0-65535):$“IBUFDB7,0,6DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETINFIMOVAH,09HINT21HMOVDX,OFFSETIBUF;键入一个十进制数(<65535)MOVA
5、H,OAHINT21HMOVCL,IBUF+l:十进制数的位数送CXMOVCH,0MOVMOVSI,OFFSETIBUF+2AX,0AGAIN:MOVDX,10MULDXANDBYTEPTR[SI],OFHADDAL,[SI]ADCAH,0INCSILOOPAGAINMOVAH,4CHINT21HCODEENDSENDSTART;指向输入的第一个字符(最高位);开始将十进制数转换为二进制数;((OxlO+a4)xlO+...)xlO+a()本程序功能:从键盘接收一个无符号十进制整数(小于65535),将英转换为二进制数,转换结果存在AX寄存器中。(2)累加结果为一个16位的二进制
6、数,为了显示结果,必需把它们转换为十进制数。将二进制数转换为十进制数的程序清单如下:DATASEGMENTOBUFDB6DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETOBUF+5MOVBYTEPTRfBXLTMOVCX,10;做(DX):(AX)/10运算LOOPl:MOVDX,0;被除数高16位清0DIVexADDDL,30H;将DL中的一位十进制数转换为ASCII码DECBXMOV[BX],DLORAX,AXJNZLOOP1;判断商是否为0,不为0继续MOVD
7、X,BXMOVAH,09HINT21H:显示转换得到的十进制数MOVAH,4CHINT21HCODEENDSENDSTART本程序功能:将存储在AX寄存器中的二进制数转换为十进制数并显示。从键盘输入一个I-进制数,并将其转换为二进制数,存放在AX中累加循环次数送CX(MOVCX,AX)AX清()(AX中存放累加和)BX送1(BX存放每次循环累加的数,累加和(在AX'IO转换为十进制数并显示2、流程图及程序框架(1)流程图(2)程序框架DATASEGMENTINFIDB“Pleaseinputanumber(0-65535):$HINF2DBOAH,ODH,“1+2+...+$”I
8、BUFDB7,0,6DUP(?)OBUFDB6DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETINFIMOVAH,09HINT21HMOVDX,OFFSETIBUFMOVAH,0AHINT21HMOVCLJBUF+lMOVCH,0MOVSI,OFFSETIBUF+2MOVAX,0AGAIN:MOVDXJOMULDXANDBYTEPTR[SI],0FHADDAL,[S