汇编程序实验报告【荐】.docVIP

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编程序实验报告【荐】.doc

汇编程序实验报告 题目要求: 每名学生需要如下描述:班级、学号、姓名、期末成绩、期中成绩、实验成绩、平时成 绩。成绩可以有小数,如果有小数只能是点5,班级、学号、姓名格式自定。试编制一 程序完成学生的录入和输出,输出的格式为:“班级、学号、姓名、总评成绩”,按照 班级、学号进行排序,每人一行;最后再输出60以下、60-70、70-80、80-90、90-100 分段内的人数。总评成绩的计算方法是:期末成绩×0.6+期中成绩×0.2+实验成绩 *0.1+平时成绩*0.1。 设计思路: 拿到这个题目经过思考后,我意识到这是一个较复杂的汇编程序,要处理的细节问题非常之多,于是我采用自顶向下逐步求精的设计方法,先确定好所需要的模块,然后画好程序流程图,思路就变得清晰多了。 这个程序根据其主要功能可分为输入、计算、排序和分类、输出四大模块。在实现这四个主要模块时可根据实际需要将独立性较强的部分写成一个子模块。经思考后,我将程序结构划分为以下一些模块,下面是个模块的说明: 模块名:main 为主程序模块 输入:从键盘输入若干学生的班级、学号、姓名和成绩等信息 输出:按次序显示每个学生的总评成绩 功能:根据输入的学生信息计算学生总评成绩,并按次序在屏幕上显示出来 模块名:input 输入:按照屏幕提示从键盘输入学生的信息,每输入完一个信息按回车输入下一项,全部输入完毕后直接按回车。 输出:把每个学生的信息分别存入对应的数组。 功能:接收每个学生的信息并储存。 调用子模块decibin把从键盘输入的一个十进制数转换为二进制数。 调用子模块charibin处理从键盘输入的姓名字符串。 调用子模块crlf完成回车和换行的功能。 模块名:compute 输入:从存储学生成绩的每个数组中取得相应的成绩。 输出:计算出学生的总评成绩,并存入总评成绩数组。 功能:计算学生的总评成绩。算法为取出一个学生的每一项成绩乘以比例因子后累加到该名学生的总评成绩中,循环直至处理完所有学生的成绩。 4. 模块名:sort 输入:从班级、学号和总评成绩数组中取出内容。 输出:建立一个索引表,内容为显示时该名学生的序号;统计每个分数段的人数存储在相应的变量中。 功能:对学生按班级学号排序,按总评成绩分类。采用算法为,排序实际上为建立一个索引表,索引表每项的内容为为最终显示时候的次序号,建立索引表用一个嵌套循环结构即可实现,对每个学生都与其它学生进行比较班级号和学生号,该名学生的序号即为班级号和学生号小于当前的人数;分类只用一个循环结构便可实现,对分数的判定采用多分支结构即可。 模块名:output 输入:所有已存放在内存中的数据 输出:按次序显示每个学生的班级学号姓名和总评成绩;显示每个分数段的成绩。 功能:显示最终结果。 调用子模块binidec将数值转换为字符并显示出来。 调用子模块display_tab显示一个制表符。 调用子模块dec_div做除法,显示每一个字符。 调用子模块crlf回车换行。 模块名:decibin 输入:从键盘接收每个字符 输出:将输入的字符串转换为数字放入寄存器bx。 功能:接受字符并进行数制转换。 模块名:charibin 输入:从键盘接收字符串。 输出:使dx指向字符串首。 功能:接受字符串,不进行数制转换。 模块名:binidec 输入:读取bx中的内容。 输出:转换为十进制数字并显示出来。 功能:将bx中的数据转换为字符并显示在屏幕上。 调用子模块:dec_div,用除法求出每个该显示的字符。 模块名:dec_div 输入:从bx中取得要转换的数据 输出:在终端屏幕上显示一个字符 功能:把bx中的二进制数除以相应的十的幂,并在屏幕上显示一位商。余数保存在bx中。 模块名:crlf 输出:完成一次回车和换行的操作。 功能:回车换行。 10.模块名:display_tab 输出:显示一个制表符。 功能:显示一个制表符。 以下是这些模块的层次结构图: 有了以上的模块层次结构图和模块说明,对程序的全貌就有了比较全面的了解了。接下来设计各模块的流程图如下: 以上是各主要模块的流程图。对于细节方面,参见程序具体注释。 另外在处理小数方面,我是这样设计的:输入数字后检测是否输入了小数点,若是,则将小数点忽略,若否,则将输入的数扩大10倍存储。在计算总评成绩的时候,乘以的比例因子我也都扩大为10倍了,保证都是整数处理。这样算出的总成绩就会是实际的100倍,因此只要在显示的时候将显示倒数第二位的时候显示一个小数点,这样就解决了小数的问题。 在数据的存储方面,我采用的是字符输入进去后转换为二进制数字存储的方法。在显示的时候只要连除10的幂次取商将二进制转换为10进制即可。 程序源代码: ;***************************

文档评论(0)

aidj + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档