文档详情

汇编语言综合实验报告.doc

发布:2017-01-01约3.21千字共11页下载文档
文本预览下载声明
华北科技学院综合性 实 验 报 告 课程名称 汇 编 语 言 实验学期 2011 至 2012 学年 第 1 学期 学生所在系部 计算机学院网络工程系 年级 09 专业班级 网络工程B093 学生姓名 李金栋 学号 200907024324 任课教师 李冬艳 实验成绩 计算机学院制 实验报告须知学生实验报告,页面空间不够,。学生应该填写的内容包括:封面相关栏目、地点、时间、结果分析。教师应该填写的内容包括:实验教师根据课程的实验要求,评定学生的实验成绩未尽事宜,请参考该课程实验大纲和大纲。 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(按姓名显示)。 主程序流程图 输入子程序的流程图 排序子程序流程 处理同分的情况: 输出子程序 由于输出学号、成绩、排名使用的算法基本一致都重复使用输出2位十进制数的方法、流程简单,在此省略此部分流程图。 运行结果: 本程序的设计思想是采用默认顺序输入成绩、用两个数组分别存放成绩、名次。从运行结果看, 已经完成了题目要求,并实现了简单的输入纠错。 关键代码分析: PAILIE PROC MOV CX,0 MOV CL,NUMBER LOOP1: MOV BH,NUMBER ; ;冒泡排序 ;BH用来计数的计名次, ;从输入的数中选一个数跟其它数比较, ;如果大 就减一这样可以算出来他的名次 ;并存在BX寄存器中。。。 MOV AH,CL ;用来保护CX寄存器 MOV SI,0 ;SI用来遍历各个数的 DEC CL ;N+1学号的成绩存在N中 MOV BP,CX ;用来取GRADE数组中的数据以便跟其它数据比较 MOV AL,GRADE[BP] ;取出数据放入CL中 MOV CL,NUMBER ;每次都循环NUMBER次 LOOP2: CMP AL,GRADE[SI] 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 RANK[BP],BH ;将获得的名次存入RANK数组中 INC CL LOOP LOOP1 ;以下代码类似于上面计算名次的代码。也是冒泡算法。 MOV SI,0 ;处理分数相等的情况, MOV AL,NUMBER CBW MOV
显示全部
相似文档