资源描述:
《青岛理工大学循环程序设计报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、青岛理工大学课程实验报告课程名称汇编语言程序设计班级计算112实验日期2013.10.21姓名任师锋学号201107063实验成绩实验名称循环结构程序设计实验目的及要求1、掌握循环结构程序设计的基本方法2、掌握重复控制指令的使用3、熟练掌握DEBUG工具的使用实验环境平台:win764位命令行方式工具:MASM.EXELINK.EXEDEBUG.EXEDOSBOX(一款软件,模拟dos环境)实验内容1、内存BUFF单元开始的存储区连续存放30个学生的某科分数,编写程序统计11,90~99,80~89,70~7
2、9,60~69和59以下分数段的人数,并把结果存放在RLT开始的单元。2、使用DEBUG工具调试程序,查看程序运行结果。算法描述及实验步骤实验步骤:根据流程图写源程序。1,打开DOSBOX编译连接源程序。2,找语法错误,若有则重复2.Debug调试找逻辑错误,若有则重复1.算法描述:(流程图)66调试过程及实验结果实验过程中出现的问题:虽然这次出现的问题不在逻辑上,但是也着实让人浪费了好长时间出现的不能解决的问题是:程序反汇编时不执行MOVAX,DESEG和MOVDS,AX这两个语句,而是直接跳过了。百思不得
3、其解,最终还考老师妙手回春,成功解决。原因是在于:只要把最后的END后的标号换成MOVAX,DSEG前的标号就可以了。调试过程:数据:50,59,60,63,70,82,96,95,100,82,62,65,75,81,95,64,35,26,79,85,100,51,54,87,49,98,89,75,81,95调试截图:1:反汇编,结合程序可知存放结果的偏移地址是:001E2:比较地址指针和存放数据的末地址,小于则继续执行3:然后比较指针执行内容和100的比较,图中可以看出50和100比较肯定小于,于是和
4、90比较64:依照3,依次类推,直到指针大于数据存放的末地址指针5:RLT中依次存放的结果分别是100,90-100,80-90,70-80,60-70,和不及格六种情况的统计结果:第二组测试数据:65,69,60,63,70,42,96,35,10,82,62,65,75,81,95,64,35,26,79,100,100,100,90,87,49,98,89,75,81总结两组测试数据:均正确反应了成绩的统计结果:证明程序的逻辑是没有错误的。感觉不足点是程序写的太多,有点繁琐,不尽如人意。这次实验,让我更
5、加深刻掌握了循环程序设计的方法和他的一些伪指令的用法,让我对汇编程序的结构有了更深的了解。MASM5.0汇编必须要有这段指令,MOVAX,DSEGMOVDS,AX这是为了让程序知道段的基质,也应该在MOVAX,DSEG前设一个标号,在程序最后ENG结束这个标号。附录SSEGSEGMENTSTACKSTKDB50DUP(0)SSEGENDS;堆栈段定义结束DSEGSEGMENTBUFFDB65,69,60,63,70,42,96,35,10,82,62,65,75,81,95,64,35,26,79,100,1
6、00,100,90,87,49,98,89,75,81BUFENDDB95RLTDB6DUP(0)6DSEGENDS;数据段定义结束CSEGSEGMENTASSUMECS:CSEG,DS:DSEGASSUMESS:SSEGBEGIN:MOVAX,DSEGMOVDS,AXLEASI,BUFF;取BUFF的首地址START:CMPSI,OFFSETBUFEND;比较SI指针和最后地址JATHEEND;如果SI的指针大于BUFEND退出程序MOVAL,[SI]CMPAL,100JNZNEXT1INCRLT+0;自增
7、1INCSI;指针加1JMPSTARTNEXT1:CMPAL,90JLNEXT2INCRLT+1;自增1INCSIJMPSTARTNEXT2:CMPAL,80JLNEXT3INCRLT+2;自增1INCSIJMPSTARTNEXT3:CMPAL,70JLNEXT4INCRLT+3;自增1INCSIJMPSTARTNEXT4:CMPAL,60JLNEXT5INCRLT+4;自增1INCSIJMPSTARTNEXT5:INCRLT+5;自增16INCSIJMPSTARTTHEEND:MOVAX,4C00HINT2
8、1HCSEGENDSENDBEGIN6