华中科技大学汇编实验报告4.docx
文本预览下载声明
PAGE 107
课 程 实 验 报 告
课程名称: 汇编语言程序设计实验
实验名称: 实验四 子程序的设计与调用,模块化程序设计
实验时间: 2016-4-12,14:00-17:30 实验地点: 南一楼804室73号实验台
指导教师: 张勇 专业班级:计算机科学与技术201409班 学 号: U201414813 姓 名: 唐礼威
同组学生: 鲁凯 报告日期: 2016年 4 月 18日
原创性声明
? 本人郑重声明:本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用已经在文中指出。除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品或成果,不存在剽窃、抄袭行为。
特此声明!
学生签名:
日期:
成绩评定
实验完成质量得分(70分)(实验步骤清晰详细深入,实验记录真实完整等)
报告撰写质量得分(30分)(报告规范、完整、通顺、详实等)
总成绩(100分)
指导教师签字:
????????????????????日期:
汇 编 语 言 程 序 设 计 实 验 报 告
PAGE 0
目录
TOC \o 1-3 \h \z \u 1 实验目的与要求 1
2 实验内容 1
3 实验过程 2
3.1 任务1 2
3.1.1 设计思想及存储单元分配 2
3.1.2 流程图 3
3.1.3 源程序 4
3.1.4 实验步骤 12
3.1.5 实验记录 12
4 体会 14
参考文献 15
实验目的与要求
(1) 掌握子程序设计的方法与技巧,熟悉子程序的参数传递方法和调用原理;
(2) 掌握宏指令、模块化程序的设计方法;
(3) 掌握较大规模程序的合作开发与调试方法。
实验内容
进一步修改与增强实验二的学生成绩查询程序的功能,具体要求如下:
程序执行时首先显示一个功能菜单:选择1=录入学生姓名和各科考试成绩,2=计算平均分,3=成绩排序,4=输出成绩单,5=程序退出。
提示:由于学生姓名和成绩是通过程序录入的,因此,定义学生成绩表缓冲区时,初始值都可以置零。为避免录入成绩的时间过程太长,假定学生人数在5人左右,具体人数自行决定。
2人一组,一人负责包括菜单显示、程序退出在内的主程序,以及菜单中的功能1和2;另一人负责菜单中的功能3和4。各自汇编自己的模块,然后连接生成一个程序。
注意,在每个模块的开始,注明编写者的名字以及同组同学的名字。
录入学生姓名和各科考试成绩时,首先显示录入的是第几个学生的信息,然后分别在提示之后输入姓名和各科成绩(可以借鉴书上十进制转二进制的子程序F10T2)。所有学生信息录入完毕后回到菜单显示的位置。姓名及考试成绩的存放、平均分的计算,按照实验二的要求。
排序的基本要求是按照平均成绩从高到低排序,也可以考虑按照指定课程的成绩排序。输出成绩单的基本要求是按照排序的结果依次显示每个学生的姓名和平均成绩,也可以考虑按照指定课程、指定进制的形式显示(可以借鉴书上二进制转十进制的子程序F2T10)。
提示:可以采用一个一维数组记录每个学生成绩的排序名次,这样就可以避免在排序算法里交换成绩表中的具体信息了。
将9号和10号DOS系统功能调用定义成宏指令并调用。
上述任务中,重要操作环节(纳入到学生自己写的实验步骤中)提示:
本次实验中需要学生尝试体会的操作可分为以下几种:
在TD中跟踪到子程序内部有几种方法?在TD中观察子程序调用和返回时堆栈的变化。
注意观察FAR、NEAR类型子程序的RET指令的机器码有何不同?观察FAR类型子程序被调用时堆栈的变化情况。
通过把一个模块拆成多个模块或反之,体会子程序和模块化程序设计的方法,体会模块调用关系图、子程序功能说明、输入/输出说明在程序设计中的作用。
观察不同模块的可合并段合并后变量偏移地址的变化情况。观察不同段在内存里的放置次序。体会模块间段的定义及其对应的装配方法。
在编程中使用不同的子程序参数传递方法来编写同一个子程序。
观察模块间的参数的传递方法,包括公共符号的定义和外部符号的引用,若符号名不一致或类型不一致会有什么现象发生?
通过TD观察宏指令在执行程序中的替换和扩展,解释宏和子程序的调用有何不同。
如何使菜单和成绩单显示得更漂亮一点?
实验过程
任务1
设计思想及存储单元分配
任务主要是实现主菜单和功能一、功能二。主菜单很简
显示全部