版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华北科技学院综合性实验报告PAGE 第3页华北科技学院综合性实验报告课程名称汇编语言实验学期2014至2015学年第1学期学生所在系部计算机学院网络工程系年级三年级专业班级网络B12-1学生姓名朱生军学号201207024106任课教师李冬艳实验成绩计算机学院制
《汇编语言》课程综合性实验报告开课实验室:基础一DATE\@"yyyy-MM-dd"2014-12-02实验题目显示学生名次表一、实验目的进行汇编语言程序设计应用的综合性训练。综合运用汇编语言循环程序、子程序、宏指令编程方法,提高汇编语言程序设计能力的应用水平。二、设备与环境PC兼容机、Windows操作系统、汇编程序masmforwindows2012三、实验内容编制一程序,要求接收从键盘输入的一个班的学生的学号、姓名、成绩,对学生的成绩进行排序,最后把学号、姓名、学生成绩、名次显示出来。实验要求:1.必须画流程图。2.本程序涉及汇编语言的多重循环、子程序及宏,其中成绩输入、计算学生名次、显示学生名次都分别用子程序,也可用宏处理。3.要求用菜单选择。具体要求:输入1是数据录入并输出(包括姓名、学号、成绩);输入2是排序后的数据输出(包括姓名、学号、成绩、名次);输入3是可以按学号查找某学生,并输出其成绩,选择修改或不改成绩。四、实验结果及分析(包括①已完成什么功能,②如何实现的、遇到的问题和解决办法、流程图和关键代码解释,③收获和体会等)(一)、程序实现的功能。1、本次实验中,我首先运用了菜单,来实现选择本程序的其他功能。2、学生信息(姓名,学号,成绩)的录入以及显示。3、对于学生的成绩来进行排序,然后显示4、用学生的学号来查询学生的信息。(二)、程序的分析:1、本程序中分别运用了宏,子程序、定义提示符等,来简化程序,并且让程序更容易的看清楚。①:宏定义的举例:PRINT MACROA LEA DX,A MOV AH,9 INT 21HENDM②:子程序定义的举例:WEIZHIPROCsun PRINTstring6 PRINTstring7 PRINTstring8 sun RETOUTPUT_ALLpxPROC(子程序中嵌套子程序)callWEIZHI_pxLET2: movbx,15movax,x1MULBXmovb1,axCALLOUTPUTpxINCX1CMPX1,3 JNZLET2RETOUTPUT_ALLpxENDPWEIZHIENDP③:提示符定义的举例:stringdb"pleaseinputname:",10,13,"$"string1db"pelaseinputSno:",10,13,"$"string3db"pleaseinputchengji:",10,13,"$"string4db"1:input.2:paixu.3:research.4:finish",10,13,'$'string5db'error',10,13,'$'2、程序的设计:①:本程序中主程序用菜单来实现各个功能的选择。首先键盘输入数字,然后依次和1、2、3、4等比较,符合了之后跳入各个功能。每个功能之中,调用之后用的子程序,来实现自己的功能。菜单的流程图如下:开始开始提示输入错误跳入一号功能程序跳入三号功能程序CMPAL,2CMPAL,4CMPAL,3Subal,30hCmpal,1跳入二号功能程序输入执行的功能号菜单结束YNYNYNNYJMP②:本程序中,第一个功能,输入学生信息,并且显示。首先调用输入信息的子程序。我在实验开头定义了三个数组,用来存放学生的姓名,学号,成绩等。每个人的每个信息预留15个单位。运用1号功能来输入姓名信息,之后判断是不是回车,不是回车,指针加1,继续输入,是回车,跳入输入学号的程序。依次类推,输入成绩用两位数的输入来实现,输入成绩结束后,开始循环输入第二个人的信息。等所有人的信息输入之后,输入信息的子程序结束。输入信息流程图在结尾。待所有人输入完成之后,直接调用输出信息的子程序。在子程序中,大循环中,运用比较来判断是否要继续输出。在输出一个人的每个信息的时候,用B1指针来判断输出第几个人的信息。输出姓名、学号的时候,用2号功能,用movcx15和LOOP来实现输出15次,用INCBX来实现依次向下的输出。输出完成后,继续输出学号(方法和输出姓名一样)。输出程序用两位数的输出来实现。输出成绩结束后,开始循环输出第二个人的信息。所有人的程序都输出完成后,输出结束。输入学生信息的流程图:跳入输入信息子程序跳入输入信息子程序MOVOUTNAME[BX],ALINCBX跳入输入学号程序MOVOUTSnumber[bx],ALincBX跳入输入成绩(两位)先输入十位,再输入个位。最后用ADDAL,DMOVOUTCHENGJI[BX],AL。把成绩存在数组里面。输入成绩的子程序结束MOVAH,1INT21HCMPAL,13MOVAH,1INT21HCMPAL,13 LOOPNY LOOPNY③:排序并且输出功能的实现:首先调用比较的子程序。在子程序中,用CX来判断要比较的人,用BX来作为成绩的指针,用字符串的比较,来比较第一个人和第二个人的成绩,如果第一个成绩大于第二个成绩,用addbx,15,来跳到第二个人的成绩,用第二个成绩和第三个成绩比较。如果在以上的比较中,前一个人成绩小于后一个人的成绩,用xhagal,outchengji[bx+15]交换两个人的成绩。待所有人的成绩排序好了之后,跳入姓名排序。用串传送,来实现姓名的交换。过程中需要定义一个空串,来作为传送中介。等姓名排序之后,跳入学号的排序(方法和姓名排序一样)。学号排序完成后,排序子程序结束。之后调用排序后输出的子程序(CALLOUTPUTpx),排序后输出的方法和之前的输出一样。输出后跳入菜单。④:本程序第三个功能,运用学号来查找学生,并且输出学生的各种信息;具体方法是:首先调用输入学号的子程序,把输入的学号放在另一个自己定义的数组里面(用来和之后学号数组里面的学号比较)。之后调用比较子程序(CALLBJ)。在比较的子程序里面,用外循环来确定比较的是第几个人的学号,内循环用串比较来比较每一位的学号,第一个人不复合后,用ADDBX,15来跳入第二个人的学号来比较。比较复合后,用JZLM1来跳到结尾,用MOVB1,BX来保存学号复合的人的位置。之后调用查找后的输出子程序(CALLOUTPUT)。此时用MOVBX,B1来把要输出的人的信息的位置,给BX指针。之后用循环输出15次,来输出这个人的每条信息。这个功能的用输入的学号来匹配学生学号的流程图在结尾。用成绩比较,流程图:MOVBX,0MOVBX,0让成绩从第0个开始addbx,15loopLlp5xchgaL,outchengji[bx+15]movoutchengji[bx],Aladdbx,15movaL,outchengji[bx]cmpaL,outchengji[bx+15]CX=0?比较结束,调用输出 LOOPNYNY3、部分代码分析:①输入姓名、学号、成绩等代码INPUT_ALLPROCPRINTstringmovbx,b1l1:MOVAH,1INT21HCMPAL,13JZLP1(LP1为输入学号的开始的提示,用于输入完姓名跳入)MOVOUTNAME[BX],ALINCBXjmpL1首先用PRINTstring来显示提示符pleaseinputname。然后用MOVBX,B1来赋给输入姓名的头地址,用1号功能输入字符,再让它和回车比较,如果是回车,表示输入姓名结束,跳入输出学号程序;如果不是回车,把那个字符存在OUTNAME[BX]中,BX自加一,JMPL1开始输入第二个字符。输入学号的代码类似。②输出姓名,学号、成绩等代码MOVCX,15 MOVBX,B1aa2: MOVDL,OUTSNUMBER[BX] MOVAH,2 INT21H INCBX LOOPaa2用MOVCX,15来循环输出15次。MOVBX,B1是把要输出的学号的第一位给BX,然后用2号功能输出,用INCBX把指针往后移动一位。用LOOPaa2来输出下一个字符。当输出学号完成后,自动跳入输出成绩。③比较成绩,并排序:LLP5:movaL,outchengji[bx]cmpaL,outchengji[bx+15]jGLLP6xchgaL,outchengji[bx+15]movoutchengji[bx],alcallPX_MZLLP6:addbx,15loopLLP5比较成绩,排序分两个循环,这段代码为内循环。首先把第一个人的成绩给al它和第二个人的成绩比较,如果大于第二个,用Addbx,15把指针跳到第二个人的成绩的位置,然后用moval,outchengji[bx],把第二个人的成绩给al,与第三个人比较。如果前一个人成绩,小于后一个人成绩,用xchgaL,outchengji[bx+15];和movoutchengji[bx],al来交换两个人的成绩,跳入LLP6,重复上述操作。4、程序运行截图:菜单和一号功能菜单和二号功能菜单和三号功能三、实验心得体会:本学期开设了汇编语言这门课程。在课程的最后,我们迎来了汇编大实验。在本学期的学习和做综合实验的过程中,我积累了好多的问题,而且在昨晚综合实验之后,我也有很多的心得体会。在刚刚拿到综合实验题目的时候,我还是有些想法,就是运用自己以前写过的小的作业中的程序,再加上之后的子程序,宏等,可以完成这次实验,当我真正开始写的时候,遇到好多问题。当我把菜单写完的时候,开始写输入、输出的程序。在我最初想法下,我写了代码,但是在运行的时候,不能按照实验要求,格式对齐,我知道,我在输入的时候,指针的位置没有搞定,计算了很多次,还是不对。这个问题,在问自己寝室同学和老师之后,很快就解决了。随后,我完成了第一个功能。在第二个功能里面,我对按成绩排序这一块,有点不是很熟悉,在做实验的时候,卡在了这个环节。老师在上机课的时候,把同学的代码拿出来给我讲解的时候,自己跟的太慢,还是没懂。对于冒泡排序,我在之前的作业中,用到过,但是,我在本次实验中,知道具体该怎么操作,但是对于代码的写作,还是不太熟悉。总会在这样那样的问题中卡住。在同学讲解过后,我依旧存在着一些问题,这些问题有些都是书上有的,还有就是老师在上课举例的时候,给我们讲解的知识点,通过翻书,翻笔记我明白了那些问题的答案。出现这些问题的原因就在于我上课听课的认真程度,以及下来做实验不爱自己翻书看看,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026学年河北省沙河市四年级语文期末通关进阶提升题详细参考解析详细答案和解析
- 多模态特征融合的态势感知模型-洞察与解读
- 泰宁县下渠乡招聘社区网格员真题附答案详解
- 2026年铜仁幼儿师范高等专科学校单招职业技能考试题库及答案详解一套
- 辉县市南村镇招聘社区网格员真题附答案详解
- 煤矿覆岩离层注浆充填技术分析
- 2026年长沙轨道交通职业学院单招职业倾向性测试题库及答案详解一套
- 2026年郑州电子信息职业技术学院单招职业倾向性考试题库及参考答案详解1套
- 汉川市回龙镇招聘社区网格员备考题库附答案详解
- 2026年益阳师范高等专科学校单招职业倾向性测试题库及参考答案详解
- 2026年人教大同版(新教材)小学英语四年级下册期末学情测试卷及答案
- 哈尔滨工业大学2026年强基计划综合面试+体质测试模拟试题及答案解析
- 2026年小学生暑期安全教育课件(详细版)
- 2026内蒙古鄂尔多斯市本级事业单位第二批引进高层次和紧缺人才28人备考题库及一套完整答案详解
- 湖南省技术产权交易所有限责任公司招聘笔试题库2026
- 2026年4月自考00160审计学试题及答案含评分参考
- 对比剂不良反应应急预案演练脚本
- 2025年河南焦作市八年级地生会考真题试卷+答案
- 吉安市吉安市2025-2026学年第二学期四年级语文期末考试卷(部编版含答案)
- 泌尿系结石代谢评估
- 影像科室的医患沟通:构建信任与精准诊疗的桥梁
评论
0/150
提交评论