学生成绩排名-汇编语言综合实验报告.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华北科技学院综合性实验报告 PAGE 第 PAGE 1 页 华北科技学院综合性 实 验 报 告 课程名称 汇 编 语 言 实验学期 2011 至 2012 学年 第 1 学期 学生所在系部 计算机学院网络工程系 年级 2009 专业班级 网络B091 学生姓名 罗希 学号 200907024114 任课教师 李冬艳 实验成绩 计算机学院制 《 汇 编 语 言》课程综合性实验报告 开课实验室:软件一实验室 2011年 12 月6 日 实验题目 显示学生名次表 一、实验目的 进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序和子程序编程方法,巩固提高汇编语言程序设计能力应用水平。 二、设备与环境 PC兼容机、Windows操作系统、汇编程序masm611。 三、实验内容 编制一程序,要求接收从键盘输入的一个班的学生成绩,并存放于50字节的GRADE数组中,其中GRADE+N保存学号N+1的学生成绩。然后根据GRADE中的学生成绩,把学生名次填入50字节的RANK数组中,其中RANK+N的内容是学号为N+1学生的名次。再按学号顺序把学生成绩及学生名次显示出来。 1.必须画流程图。 2.本程序要求要有多重循环和子程序,其中成绩输入、计算学生名次、显示学生名次都分别用子程序,也可用宏处理。 四、实验结果及分析 本程序一共有5个子程序。子程序分别是INPUT键盘输入,COPY数据转存,CHANG 十进制数转换成二进制,SORT按成绩排序和PRINT打印排序名单。 输入界面: 首先调用INPUT功能输入学号,姓名,成绩,存入BUFF1,BUFF2,BUFF3缓存中,此时的输入顺序就是他们排名。再调用COPY将3个缓存中的数据保存在NUBER,SNAME,SCORE1中。此时再调用CHANG功能把SCORE1中的成绩转换成2进制存到SCORE2中。用冒泡排序法从高到低进行排序,此时SCORE2的顺序改变,顺序号也改变,而NUBER,SNAME,SCORE1中的数据都不改变。最后,调用PRINT方法输出,按照成绩降序进行输出。根据他们的顺序号找出他们在NUBER,SNAME,SCORE1中的学号,姓名,成绩输出。 子程序流程图: 主程序主程序: 主程序 初始化 初始化 CALL INPUT CALL INPUT CALL SORT CALL SORT CALL PRINT CALL PRINT 结束 结束 INPUT子程序: INPUT INPUT BX+1 CALL COPY RET返回主程序 保存输入次序 BXP? 输入姓名 输入学号 输入成绩 Y 主要代码分析: LEA DX,INFOR1 MOV AH,9 INT 21H LEA DX,BUFF1 MOV AH,10 INT 21H MOV AL,BUFF1+1 ADD AL,2 MOV AH,0 MOV SI,AX MOV BUFF1[SI],0 此代码是输入姓名的代码,首先讲缓存区BUFF1的偏移地址给DX调用10号功能输入一个字符串,然后将回车0D所在位置换为0便于输出显示。 子程序COPY: 子程序COPY 子程序COPY CX=N+1 姓名传送到SNAME 成绩传送到SCORE1 CALL CHANGE CX=N+1 学号传送到NUBER 关键代码分析: MOV CX,N+1 LEA SI,BUFF1+2 LEA DI,SNAME ADD DI,SIGN1 CLD REP MOVSB MOV CX,N MOV AX,$ LEA DI,BUFF1+2 REP STOSB CX为姓名长度,将缓存区的姓名传入到SNAME中,SIGN1为他们的间隔,传完之后再将缓存区的数据清空,全部设置为$。学号和成绩也是如此。 子程序CHANGE: 子程序CHANG 子程序CHANG CX-成绩位数 从BUFF2取出一数给AL 去掉ASCII码 扩大10倍 与X相加 SOCRE2给2进制成绩X RET返回 在0-9之间? 循环结束? N Y N N 关键代码: REPT2: MOV AL,[SI] CMP AL,30H J

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档