显示学生名次表_第1页
显示学生名次表_第2页
显示学生名次表_第3页
显示学生名次表_第4页
显示学生名次表_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、华北科技学院综合性实验报告华北科技学院综合性实 验 报 告 课程名称 汇 编 语 言 实验学期 2013 至 2014 学年 第 2 学期学生所在系部 计算机学院计算机工程系 年级 二年级 专业班级 学生姓名 学号 任课教师 李冬艳 实验成绩 计算机学院制实验报告须知1、 学生上交实验报告时,必须为打印稿(A4纸)。页面空间不够,可以顺延。2、 学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、内容、结果及分析等。3、 教师应该填写的内容包括:实验成绩、教师评价等。4、 教师根据本课程的综合性实验指导单中实验内容的要求,评定学生的综合性实验成绩;要求在该课程期末考试前将实验

2、报告交给任课教师。综合性实验中,所涉及的程序,文档等在交实验报告前,拷贝给任课教师。任课教师统一刻录成光盘,与该课程的期末考试成绩一同上交到系里存档。5、 未尽事宜,请参考该课程的实验大纲和教学大纲。 汇 编 语 言课程综合性实验报告开课实验室:基础实验室四 2021-10-21实验题目显示学生名次表一、实验目的进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序、子程序、宏指令编程方法,提高汇编语言程序设计能力的应用水平。二、设备与环境PC兼容机、Windows操作系统、汇编程序masm for windows 2012三、实验内容 编制一程序,要求接收从键盘输入的一个班的学生的学

3、号、姓名、成绩,对学生的成绩进行排序,最后把学号、姓名、学生成绩、名次显示出来。 实验要求:1.必须画流程图。2.本程序涉及汇编语言的多重循环、子程序及宏,其中 成绩输入、计算学生名次、显示学生名次都分别用子程序,也可用宏处理。3.要求用菜单选择。具体要求:输入1是数据录入并输出(包括姓名、学号、成绩);输入2是排序后的数据输出(包括姓名、学号、成绩、名次);输入3是可以按学号查找某学生,并输出其成绩,选择修改或不改成绩。四、实验结果及分析(包括已完成什么功能,如何实现的、遇到的问题和解决办法、流程图和关键代码解释,收获和体会等)1.程序所完成的功能程序编写主要完成的功能包括:学生姓名、学号和

4、成绩的输入,学生成绩和学号的排序、计算学生名次、排序结果显示等功能,其中每种排序时不只是该排序顺序要改变,比如说显示成绩排序的时候,学生姓名、学号也要随着成绩排序的变化而变化,这样的显示的结构才准确。在程序设计中,由于要实现的功能比较复杂,因此,运用了分支程序相关指令、子程序调用、宏调用和嵌套循环程序来实现所需完成的功能。2.流程图及代码解释2.流程图及代码解释(1)主程序aa macro mov ah,9 lea dx,mes int 21hendm ;定义一个回车换行的宏 mov ah,1 int 21h .if al=1 jmp input_data .elseif al=2 jmp o

5、utput_data .elseif al=3 jmp find_out .else jmp exit .endif ;从键盘输入菜单选项input_data: aa call input ;调用输入子程序input call print ;调用输出子程序print jmp lp output_data: aa call sort ;调用排序子程序call print ;调用输出子程序call print_sort jmp lp find_out: aa ;调用回车换行宏call select_st ;调用查找学生子程序jmp lp(2).输入子程序 mov cx,3 ;循环输入3个学生记录l

6、p0:mov si,x lp1:mov ah,1 ;输入学生学号 以空格结束 int 21h mov idsi,al inc si cmp al,20h jz lp2 jmp lp1 lp2:push si mov si,y ;保存id存储器未填充数据的地址lp3: mov ah,1 ;输入学生姓名 以空格结束 int 21h mov name0si,al inc si cmp al,20h jz lp4 jmp lp3 lp4:push si ;保存name0存储器未填充数据的地址 mov si,zlp5: mov ah,1 ;输入学生成绩 以空格结束 int 21h mov scoresi

7、,al inc si cmp al,20h jz lp6 jmp lp5 lp6:mov z,si pop y pop x ;将学生学号 姓名 成绩 依次出栈 loop lp0 (3).排序子程序 lt1:mov ax,word ptr scoresi ;按照成绩比较(以字单元为一个成绩),高到低 cmp ax,word ptr scoresi+3 jg lt2 xchg ax,word ptr scoresi+3 mov word ptr scoresi,ax mov ax,word ptr idsi ;学号跟随成绩一起排序 xchg ax,word ptr idsi+3 mov word

8、ptr idsi,ax mov ax,word ptr name0si ;姓名跟随成绩一起排序xchg ax,word ptr name0si+3mov word ptr name0si,ax(4).查找学生子程序 mov si,0 mov cx,2 ;学号分两次输入 mov ah,9 lea dx,mes2 int 21hx1: mov ah,1 int 21h mov bufsi,al inc si loop x1 ;输入要查找的学生的学 mov si,0 mov ax,word ptr bufsi mov cx,3 ;比较次数x2:cmp ax,word ptr idsi jz x3 a

9、dd si,3 loop x2 ;以字单元为整体一次查找 x3: mov ah,9 ;显示找到 lea dx,str8 int 21h mov ah,9 lea dx,str7 int 21h mov ah,2 mov dl,scoresi int 21h mov ah,2 mov dl,scoresi+1int 21h ;分两次输出该生的成绩 mov ah,9 lea dx,str4 int 21h mov ah,1 int 21h .if al=y ;输入y则输入新的成绩 mov ah,9 lea dx,str5 int 21h mov ah,1 ;成绩分两次输入 mov scoresi,

10、al int 21h mov ah,1 mov scoresi+1,al int 21h .elseif al=n ;输入n则不修改成绩 mov ah,9 lea dx,str6int 21h .endif(5).输出子程序 mov ah,9 lea dx,str2 int 21h ;显示提示 aa mov ah,9 lea dx,id int 21h ;输出学号 aa mov ah,9 lea dx,name0 int 21h ;输出姓名 aa mov ah,9lea dx,scoreint 21h ;输出成绩3.运行结果4.收获和体会 通过这次的汇编程序,我从中学习到了很多知识。虽然刚开始

11、的时候遇到了很多难题,但是通过与老师、同学的交流之后,逐步克服了一个个的难题。提高了自己编程的思维能力,在将来的学习,生活之中能够快速的解决问题。本程序主要运用模块化程序设计方法,按照各部分程序所实现的不同的功能把程序划分成多个模块,分别对各模块编制和调试程序,最后再将它们连接起来,完成题目要求。程序设计分为一个主程序和四个子程序以及七个宏组成的。四个子程序分别是:input输入子程序、print输出子程序、sort排序排序子程序、print_sort名次输出子程序。宏定义是aa回车换行宏。对于子程序,首先要对主程序要用到的寄存器入栈保护,最后还要一次出栈,遵循先进后出的规则。还有就是嵌套循环中要注意寄存器的保护。在排序中,姓名,成绩跟随成绩一起交换,要注意地址计算。宏定义必须在调用之前。 当然此程序还有待完善,不能区分数字跟字母,还有输入的位数没有限定,我会继续

温馨提示

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

评论

0/150

提交评论