您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文档 > 华中科技大学汇编实验报告3
课程实验报告课程名称:汇编语言程序设计实验实验名称:实验三程序执行时间与代码长度优化实验时间:2016-4-5,14:00-17:30实验地点:南一楼804室55号实验台指导教师:张勇专业班级:计算机科学与技术201409班学号:U201414813姓名:唐礼威同组学生:无报告日期:2016年4月6日原创性声明本人郑重声明:本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用已经在文中指出。除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品或成果,不存在剽窃、抄袭行为。特此声明!学生签名:日期:成绩评定实验完成质量得分(70分)(实验步骤清晰详细深入,实验记录真实完整等)报告撰写质量得分(30分)(报告规范、完整、通顺、详实等)总成绩(100分)指导教师签字:日期:汇编语言程序设计实验报告0目录1实验目的与要求.......................................................12实验内容.............................................................13实验过程.............................................................23.1任务1............................................................................................................................23.1.1设计思想及存储单元分配........................................................................................23.1.2流程图........................................................................................................................33.1.3源程序........................................................................................................................33.1.4实验步骤....................................................................................................................73.1.5实验记录....................................................................................................................83.2任务2............................................................................................................................83.2.1设计思想及存储单元分配........................................................................................83.2.2流程图........................................................................................................................83.2.3源程序........................................................................................................................83.2.4实验步骤..................................................................................................................123.2.5实验记录..................................................................................................................123.3任务3..........................................................................................................................133.3.1设计思想及存储单元分配......................................................................................133.3.2流程图......................................................................................................................133.3.3源程序......................................................................................................................143.3.4实验步骤..................................................................................................................143.3.5实验记录..................................................................................................................144体会................................................................14参考文献...............................................................15汇编语言程序设计实验报告11实验目的与要求(1)熟悉汇编语言指令的特点,掌握代码优化的基本方法;(2)理解高级语言程序与汇编语言程序之间的对应关系。2实验内容任务1.观察多重循环对CPU计算能力消耗的影响若有m个用户在同一台电脑上排队使用实验二的程序,想要查询“wangwu”这个学生的平均成绩,那就相当于将实验二的程序执行了m次。为了观察从第一个用户开始进入查询至第m个用户查到结果之间到底延迟了多少时间,我们让实验二的功能二和功能三的代码重复执行m次,通过计算这m次循环执行前和执行后的时间差,来感受其影响。由于功能一和功能四需要输入、输出,速度本来就较慢,所以,没有纳入到这m次循环体内(但可以保留不变)。请按照上述设想修改实验二的程序,并将m值尽量取大(建议m=1000),以得到较明显的效果。提示:在进入功能二之前增加m次循环的初始化工作,在功能三结束之后增加m次循环的条件判断和转移语句。学校汇编教学网站的软件下载中提供了显示当前时间“秒和百分秒”的子程序。若在m次循环前调用一下该子程序,m次循环执行完之后再调用一下该子程序,就能在屏幕上观察并感受到执行循环前后的时间差(时间差值需要自行手工计算)。注意,由于虚拟机环境下CPU会被分时调度,故该时间差值会因计算机运行环境与状态的不同而不同。任务2.对任务1中的汇编源程序进行优化优化工作包括代码长度的优化和执行效率的优化,本次优化的重点是执行效率的优化。请通过优化m次循环体内的程序,使程序的执行时间减少10%以上。减少的越多,评价越高!优化方法提示:首先是通过选择执行速度较快的指令来提高性能,比如,把乘除指令转换成移位指令、加法指令等;其次,内循环体中每减少一条指令,就相当于减少了m*n条指令的执行时间,需要仔细斟酌;第三,尽量采用32位寄存器寻址,能有更多的机会提高指令执行效率。汇编语言程序设计实验报告2任务3.观察用C语言实现的任务1的程序与汇编语言实现的程序的差异首先确定自己实现的任务1程序中的m与n的值与老师提供的C语言程序中的对应值是一样的【老师提供的C语言源程序ex3.c仅仅实现了功能二和三,其对应的执行程序是ex3D.exe(缺省设置版)和ex3F.exe(执行速度优化版),在学校汇编教学网站的实验指导中下载】,然后对比两种语言实现的程序的执行效率和代码长度。通过用TD等工具反汇编执行程序ex3D.exe和ex3F.exe,观察和总结C语言编写程序和自己的汇编语言程序的对应关系及差异,总结其中可以简化的地方,以优化代码长度和执行效率。提示:采用反汇编方法观察C语言编写生成的执行程序时,首先观察程序的整体结构特点,然后重点分析、比较计算平均成绩的程序代码Average()。若你的计算机执行速度很快,需要加大程序中的循环次数m的值,则除了可采用修改源程序,然后再编译连接的方法实现外,还可以使用TD直接在内存中去修改执行程序中的m值的方法实现3实验过程3.1任务13.1.1设计思想及存储单元分配查找和计算成绩的功能与第二次实验相同。循环是通过定义一个双字类型的COUNT,每查找和计算一次后减一,COUNT等于0时退出。寄存器分配:BP:用来存储输入字符串的地址BX:用来存储BUF段的首地址SI:查找字符时实现递增到下一字符DX:字符串缓冲区地址,也用来计算成绩AX:计算成绩是存储数据汇编语言程序设计实验报告33.1.2流程图开始输出提示信息,读入学生姓名zhangsan调用timer函数开始计时DL指向BUF缓冲区,DH指向输入首字符比较DL与DH中信息DL缓冲区威0?Y计算学生平均成绩DL++,DH++NCOUNT--COUNT==0?Y调用timer显示所花时间结束3.1.3源程序优化前的代码(优化部分的代码见任务二实验记录):.386STACKSEGMENTUSE16STACKDB200DUP(0)STACKENDS汇编语言程序设计实验报告4DATASEGMENTUSE16COUNTDD100000000BUFDB'zhangsan',0,0DB100,85,80,?MSGDB'Inputthename:$'CONTINUDB'Enterqtoexit:$'INPUTDB10DB?DB10DUP(0)DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXJMPBEGINBEGIN:LEADX,OFFSETMSG;输出提示信息MOVAH,9HINT21HLEADX,OFFSETINPUT;读入学生姓名MOVAH,0AHINT21HMOVDL,0AH;换行符MOVAH,2HINT21HMOVAX,0;表示开始计时CALLTIMERNEXT:LEABP,OFFSETINPUT;将INPUT基址存放至BPADDBP,2LEABX,OFFSETBUF;将BUF基址存放至BXMOVSI,-1COMP:
本文标题:华中科技大学汇编实验报告3
链接地址:https://www.777doc.com/doc-2590392 .html