汇编语言综合实验报告.doc_第1页
汇编语言综合实验报告.doc_第2页
汇编语言综合实验报告.doc_第3页
汇编语言综合实验报告.doc_第4页
汇编语言综合实验报告.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

华北科技学院综合性实验报告华北科技学院综合性实 验 报 告 课程名称 汇 编 语 言 实验学期 2011 至 2012 学年 第 1 学期学生所在系部 计算机学院网络工程系 年级 09 专业班级 网络工程B093 学生姓名 李金栋 学号 200907024324 任课教师 李冬艳 实验成绩 计算机学院制实验报告须知1、 学生上交实验报告时,必须为打印稿(A4纸)。页面空间不够,可以顺延。2、 学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。3、 教师应该填写的内容包括:实验成绩、教师评价等。4、 教师根据本课程的综合性实验指导单中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验报告交给任课教师。综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。5、 未尽事宜,请参考该课程的实验大纲和教学大纲。 汇 编 语 言课程综合性实验报告开课实验室:软件一实验室 2011年 12 月6 日实验题目显示学生名次表一、实验目的显示学生名次表二、设备与环境PC兼容机、Windows操作系统、汇编程序masm611三、实验内容编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字节的GRADE数组中,其中GRADE+N保存学号N+1的学生成绩。然后根据GRADE中的学生成绩,把学生名次填入50字节的RANK数组中,其中RANK+N的内容是学号为N+1学生的名次。再按学号顺序和学生名次顺序把学生成绩显示出来。实验要求:1.必须画流程图。2.本程序要求要有多重循环和子程序及宏,其中 成绩输入、计算学生名次、显示学生名次都分别用子程序,也可用宏处理四、实验结果及分析(包括已完成什么功能,如何实现的、遇到的问题和解决办法、流程图和关键代码解释,收获和体会等)1、按照题目要求,本程序实现了以下功能:(1)输入成绩,不需要事先设定学生数、按照提示输入决定是否再次输入与停止。(2)按学号显示成绩和名次。2、程序流程 首先,先定义两个宏:换行和空格。主程序包括调用三个子程序:INGRADE(输入成绩)、PAILIE(排列)、XIANSHI(按姓名显示)。主程序流程图输入子程序的流程图开始CX赋1,SI赋0输入学生成绩成绩存入GRADESI,CX存入XUEHAOSISI+1,CX+1是否再次输入是否输入错误结束YNYY排序子程序流程处理同分的情况:输出子程序由于输出学号、成绩、排名使用的算法基本一致都重复使用输出2位十进制数的方法、流程简单,在此省略此部分流程图。运行结果:本程序的设计思想是采用默认顺序输入成绩、用两个数组分别存放成绩、名次。从运行结果看,已经完成了题目要求,并实现了简单的输入纠错。关键代码分析:PAILIE PROC MOV CX,0 MOV CL,NUMBERLOOP1: MOV BH,NUMBER ; ;冒泡排序 ;BH用来计数的计名次,;从输入的数中选一个数跟其它数比较,;如果大 就减一这样可以算出来他的名次;并存在BX寄存器中。 MOV AH,CL;用来保护CX寄存器 MOV SI,0;SI用来遍历各个数的 DEC CL;N+1学号的成绩存在N中 MOV BP,CX;用来取GRADE数组中的数据以便跟其它数据比较 MOV AL,GRADEBP;取出数据放入CL中 MOV CL,NUMBER;每次都循环NUMBER次LOOP2: CMP AL,GRADESI JG CHANGE INC SI LOOP LOOP2 JMP JIXU CHANGE:DEC BH INC SI LOOP LOOP2 JIXU:MOV CL,AH;恢复CX寄存器 DEC CL MOV BP,CX MOV RANKBP,BH;将获得的名次存入RANK数组中 INC CL LOOP LOOP1 ;以下代码类似于上面计算名次的代码。也是冒泡算法。 MOV SI,0 ;处理分数相等的情况, MOV AL,NUMBER CBW MOV CX,AXLOOP3: MOV DI,CX DEC CX MOV BP,0 MOV BX,0 MOV SI,CX MOV AL,RANKSI MOV CX,0 MOV CL,NUMBER LOOP4:CMP AL,RANKBP JE YOUHUA INC BP LOOP LOOP4 JMP JIXU1 YOUHUA: INC BX;用来计算有几个数是相同的 INC BP;遍历每一个数 LOOP LOOP4 JIXU1:MOV CX,DI DEC BX SUB RANKSI,BL ;相同成绩的学生名次减BL LOOP LOOP3 RETPAILIE ENDP程序总结与感想:程序的核心算法在于排序成绩、计算学生名次、这里主要使用冒泡算法,关于计算排名,默认某个学生a排名是max,如果有学生成绩比他大,a的排名自减。这部分代码加在冒泡的算法中一起执行。对于两个学生分数相同的情况,上面的流程图给出了解释,源代码中有详细的注释。在处理相同分数时,外循环SI从end到0,内循环BP from 0 to end,BX 用来存放某次外循环分数相同的个数,也包括自己,相等BX加1,BP指针后移;不相等BP指针后移,之后恢复CX,BX减1,RANKSI减BX,进入外循环,SI指针前移。直至循环结束,处理完同分的情况。 感想:编写这个程序,个人认为可以用简单的结构实现简单的功能,定义两个宏为了使用方便,由于能力有限采用按顺序输入。关于程序,借鉴冒泡排序和其他同学的意见。子程序的算法是整个程序关键,寄存器使用要有固定的格式风格,可以减少错误,提高效率。令外,程序模块化更有利于修改和检查,提高程序可读性。个人认为,只要程序能

温馨提示

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

评论

0/150

提交评论