华中科技大学汇编语言程序设计实验报告(三)程序执行时间和代码长度优化.doc
文本预览下载声明
课程实验报告
课程名称: 汇编语言程序设计实验
实验名称:实验二 程序执行时间和代码长度优化
实验时间:2017-3-29, 14: 30-17: 30实验地点: 南一楼804室60号实验台
指导教师: 李专
专业班级:计算机科学与技术201502班
学 号: U201414596 姓 名: 卢振兴
同组学生: 无 报告日期: 2017年3月29日
原创性声明
本人郑重声明:本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用 已经在文屮指出。除文屮已经注明引用的内容外,本报告不包含任何其他个人或集体已经公 开发表的作品或成果,不存在剽窃、抄袭行为。
特此声明!
学生签名:卢振兴
日期:2017. 3. 29
成绩评定
实验完成质量得分(70分) (实验步骤清晰详细深入, 实验记录真实完整等)
报告撰写质量得分(30分) (报告规范、完整、通顺、 详实等)
总成绩(100分)
指导教师签字: 口期:
实验目的与要求
(1) 熟悉汇编语言指令的特点,掌握代码优化的基本方法;
(2) 理解高级语言程序与汇编语言程序Z间的对应关系。
实验内容
任务1?观察多重循环对CPU计算能力消耗的影响
若有m个用户在同一台电脑上排队使用实验一任务四的程序,想要查询成绩列表中最 后一个学生“wangwu”的平均成绩,那就相当于将实验一任务四的程序执行了 m次。为了 观察从第一个用户开始进入查询至第m个用户查到结果之I可到底延迟了多少时I可,我们让 实验一任务四的功能二和功能三的代码重复执行m次,通过计算这m次循环执行前和执行 后的时问差,来感受其影响。由于功能一和功能四需要输入、输出,速度本来就较慢,所以, 没有纳入到这m次循环体内(但可以保留不变)。请按照上述设想修改实验一任务四的程序, 并将m值尽量取大(建议m=IOOO,具体数值依据实验效果来改变,逐步增加到比较明显 的程度,比如秒级延迟),以得到较明显的效果。
任务2?对任务1中的汇编源程序进行优化
优化工作包括代码长度的优化和执行效率的优化,本次优化的重点是执行效率的优化。 请通过优化m次循环体内的程序,使程序的执行时I可尽可能减少10%以上。减少的越多, 评价越高!
优化方法提示:首先是通过选择执行速度较快的指令来提高性能,比如,把乘除指令转 换成移位指令、加法指令等;其次,内循环体中每减少一条指令,就相当于减少了 mS条 指令的执行时间,需要仔细斟酌;第三,尽量采用32位寄存器寻址,能有更多的机会提高 指令执行效率。
任务3?观察用C语言实现的实验一任务四中功能一的程序与汇编语言实现的程序的差 异
用汇编语言和C语言分别实现实验一任务四中功能一的功能(对汇编语言而言,就是 把实验一屮相关程序摘取出来成为独立的程序),对比两种语言实现的程序的代码情况,观 察和总结C语言编写程序和白己的汇编语言程序的对应关系及差异,总结其屮可以简化的 地方。
实验过程
3.1任务1
3.1.1设计思想
在实验一任务4的基础上,加上一个COUNT变量作为计数器,用于循环执行功能二和 功能三。把计时子程序加入代码段当屮。
在功能二开始之前和功能四结朿之后分別调用该计时程序。在跳出COUNT控制的循环 后,将COUNT置回初值(本实验屮设置为8000)o
寄存器分配:
主要寄存器分配同实验一任务4,在COUNT控制的循环结束后,用DX临时存放数值 8000,并将值赋给COUNT,使其冋到初始值。
3.1.2流程图 在实验一任务四的源程序中加入由COUNT控制的循坏后,实验流程图如图2.1所示。
开始
图2.1观察多重循环对CPU影响流程图
3-1.3源程序
POIN DW 0 ;此行之前为任务一功能四相关定义
COUNT DW 8000
DATA ENDS
I
I
I
LEA DX,CRLF;
MOV AH,9
INT21H ;此行Z前为任务一功能四相关代码
MOV AX, 0
CALL TIMER
XUNHUAN:
MOV CX,N
INC CX
LOOPA: DEC CX ;此行之后为任务一功能四相关代码
I
I
I
MOV POIN, BP ;将该学生的起始偏移地址存入POIN中
CALLCALGR
DEC COUNT ;m次计数递减
JNE XUNHUAN
MOV AX,1
CALL TIMER
MOV AL, DS:[BP + 3];
MOV DX, 8000
MOV COUNT, DX
LEA DX, GRANOT;此行之后为任务一功能四相关代码
MOV AH, 9
INT21H
I
I
I
TIMER PROC
PUSH DX
PUSH CX
PUSH BX
MOV BX, AX
MOV AH, 2CH
INT
21H
;CH=hour(0-23),CL=minute(0-59
显示全部