北邮微机原理汇编实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子工程学院

微机原理汇编语言上机实验报告

班级:

学号:

姓名:

班内序号:

一、实验要求

一个学生的信息包括姓名、班级、学号(班内序号)、成绩。试编写程序实现以下功能:

(1)能录入学生成绩(十进制形式);提示:输入形如:tom 301 16 95回车,每名学生用一行,选择一个特殊符表示输入结束; (2)能按要求:如学号或成绩进行排序显示; (3)能统计平均成绩;

(4)能统计不及格、60-70、70-80、80-90、90-100各分数段的人数。

二、程序流程和算法思想

(一).程序流程设计

根据本次实验要求要求实现的5个功能:信息录入、按学号排序、按成绩排序、求平均成绩、求各个分数段人数,在加上一个退出程序,总体上可以将整个程序划分为七个部分,依次为功能选择部分(六个选项)、信息录入部分、按学号排序部分、按成绩排序部分、求平均成绩部分、求各个分数段部分、退出程序部分。

根据以上的划分,画出流程图如下:

(二). 数据结构

1、采用数组进行数据存储:

(1)学生人数数组stuNum DB 0 (2)学生信息数组

Student DB maxNum DUP (14,0,'$','$','$','$','$','$','$','$','$','$','$','$','$','$'),

每组数数有0-17共18个字节,0为最大输入,1为实际输入,2-16为学生信息,17为”$” 学生信息存储格式为(名称 班级 学号 成绩),例如(liu 207 11 98),

(3)平均成绩数组 aveScores DB 00H,'$'

$

6

5 4

功能选择 Start Exit

求平均成绩 统计分数段 3 按成绩排序 2

1 按学号排序 信息录入

(4)用变量countA DB 00H,'$'、countB DB 00H,'$'、countC DB 00H,'$'、countD DB 00H,'$'、countE DB 00H,'$'分别记录90分以上、89~80分、79~70

分、69~60分以及60分以下各分数段人数。

2、子程序

根据实验要求的功能,程序包含6个子程序

(1)FunctionChioce 程序功能选择

(2)infinput 学生信息输入

(3)IDbublingSort 按学号排序(升序)

(4)gradeBublingSort 按成绩排序(降序)

(5)countAverageScores 计算平均分

(6)Statistics 统计各个分数段人数

对于学生按成绩或学号排序,采用冒泡排序,成绩按降序排序,学号按升序排序

3、提示信息

Please choose 选择功能

Wrong choice! Please choose it again! 无此选项,重新选择

Please input students’ information 输入学生信息

Result 输出结果(按学号排序、按成绩排序、计算平均成绩、统计分数段)

<60: 小于60分人数

60~69: 60~69分人数

70~79: 70~79分人数

80~89: 80~89分人数

90~100: 90~100分人数

三、程序运行截图

程序功能选择

学生信息输入

按成绩排序

统计各个分数段人数

错误选择报错,重新输入

四、实验总结

这次汇编语言上机实验,要求编写一个学生信息录入查询程序,实现成绩录入,按学号排序,按成绩排序,求平均分,统计各个分数段人数的功能。

从程序的设计上来说,我学会了自顶向下设计的方式,即根据程序要实现的功能,将程序划分为一个个小的子程序,画出流程图,再进行程序的编写及细化。

从对汇编语言语法上来说,这次实验大大地增强了我对汇编语言的掌握程度。这次的实验相对来说比较综合,用到的知识也很多,从最基本的数组和变量的定义,到各种运算符的运用,到各个指令的使用,到较为复杂的程序的总体框架的编写,子程序的定义和调用,宏的定义和调用,数据参数的传递。在整个编写的过程中,我对于汇编语言语法的理解加深了,而且,对于其实现的原理机制的理解也大大增强了。

汇编语言并非高级语言,不是面向对象,难度较大,极有可能因为一些小的细节导致程序无法运行,甚至出现不正确的结果,例如入栈和出栈问题等,排查起来相对较为困难。我在这次的实验中也遇到了各种各样的小问题,但在自己细心的检查下以及和同学们的讨论中,这些问题也都一一解决了。这次实验对于提高我的编程思维能力和发现问题,解决问题的能力的效果还是比较明显的。

总的来说,这次的实验还是比较完满的,而且是极其有意义的。这对于我以后无论是读研继续深造,还是步入社会工作,都是很有帮助的。

五、实验源代码

DATA SEGMENT

maxNum EQU 100 ;学生的最大人数

stuNum DB 0 ;学生人数

Student DB maxNum DUP (14,0,'$','$','$','$','$','$','$','$','$','$','$','$','$','$') ;存储学生信息

aveScores DB 00H,'$' ;存储学生平均成绩MSG DB "This is a program for static students information:",0aH,0dH, DB "1.Please input student`s information(tom 301 16 95)!",0aH,0dH,

DB "2.Sorting by ID!",0aH,0dH,

DB "3.Sorting by grade!",0aH,0dH,

DB "4.Average students` scores!",0aH,0dH,

DB "5.Statistics!",0aH,0dH,

DB "0.Exit the program!",0aH,0dH,

DB "Please chooce:",0aH,0dH,'$' ;选择功能选项的提示

RESULT DB "Result: ",0aH,0dH,'$'

InputMSG DB "Please input students` information:",0aH,0dH,'$'

ERROR DB "Wrong choice!Please chooce it again!",0aH,0dH,'$'

countE DB 00H,'$' ;0~59分数段学生数

countD DB 00H,'$' ;60~69分数段学生数

countC DB 00H,'$' ;70~79分数段学生数

相关文档
最新文档