汇编课程设计 测量程序运行时间.docx
- 文档编号:7435971
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:12
- 大小:135.96KB
汇编课程设计 测量程序运行时间.docx
《汇编课程设计 测量程序运行时间.docx》由会员分享,可在线阅读,更多相关《汇编课程设计 测量程序运行时间.docx(12页珍藏版)》请在冰豆网上搜索。
汇编课程设计测量程序运行时间
课程设计报告
课程名称汇编语言程式设计
课题名称测试任意程式运行时间
专业通信工程
班级0701
学号200703040125
姓名李溢铮
指导教师廖智、吴德建
2011年3月11日
湖南工程学院
课程设计任务书
课程名称汇编语言程式设计
课题测试任意程式运行时间
专业班级通信0701
学生姓名李溢铮
学号200703040125
指导老师廖智、吴德建
审批
任务书下达日期2011年3月1日
任务完成日期2011年3月11日
一、设计内容与设计要求
1.课程设计目的:
《汇编语言程式设计》是计算机专业的重要的专业基础课,通过本课程设计使学生进一步巩固课堂所学,全面熟悉、掌握8088宏汇编语言程式设计的基本方法和技巧,进一步提高编写程式、阅读分析程式及上机操作、调试程式的能力。
2.课题题目
1)测量任意程式的运行时间
2)读入一个文本文件并以DEBUG中的D命令格式显示。
3)文件加密程式
4)编写一个时钟程式
5)画网格线
6)画脉冲波图形
7)用“*”画菱形框
8)计算比赛成绩
3.设计要求:
1)在一周内学生须上机16小时以上,程式调试完后,须由指导老师在机器上检查运行结果,经教师认可后的源程式可通过打印机输出。
2)分组及安排
A.每组同学必须完成所指定的题目,每个同学须自己完成设计,应有不同的思路。
B.按学号分组,第一组为1、9、17、25、33号同学,第二组为2、10、18、26、34号,第三组为3、11、19、27、35号,依次类推,其中第一组做第一题,第二组做第二题,依次类推。
3)按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
4)不得抄袭他人程式、课程设计报告,每个人应体现自己的个性设计,成绩的考核按上机表现、答辩成绩及课程设计说明书来综合评定。
成绩分为优、良、中、及格、不及格五级分评定。
二、进度安排
第2周星期三14时:
00分——18时:
00分
星期日8时:
00分——12时:
00分
第3周星期一14时:
00分——18时:
00分
星期三8时:
00分——12时:
00分
星期三14时:
00分——18时:
00分
星期五8时:
00分——12时:
00分
目录
一、题目1
二、程式总体设计方案、思路1
三、程式设计框图2
四、源程式清单2
五、程式调试结果及分析5
六、设计总结6
一、题目
测量任意程式的运行时间
要求:
该程式驻留记忆体
思路:
DOS操作系统中,程式的调入运行及程式的终止均是通过相应的软中断来实现的。
若取得相应软中断,记录下程式开始调入运行的时间及程式终止的时间,则可测量出该程式运行的时间。
提示要点:
与之相关的软中断分别为:
程式开始执行:
4BH号系统功能调用(INT21H)
程式结束:
INT20H
INT27H
00H、3lH、4CH号系统功能调用(INT21H)。
二、程式总体设计方案、思路
1、总体设计
DOS系统中所有程式的开始和结束都会调用特定中断的相应功能,我们要测试某一程式运行时间,只要分别记录程式开始的系统时间以及结束时的系统时间。
再将二者求差值,就可以算出该程式运行时间了。
2、设计思路
我们可以取得程式开始和结束时调用的相应的中断,在中断执行之前加入记录时间的功能并让被修改的中断程式驻留在记忆体当中,记录完之后再调回到原中断,既不影响中断调用又达到了记录的目的。
在取得21号中断的时候先要对AH中的数字进行判断,再决定执行开始的计时还是结束的计时。
开始计时和结束计时分别为两个子程式BEGIN和FINISH,BEGIN将即时时间存入变量中,FINISH先获取当前时间,再把变量里的开始时间相应寄存器,求两者的差值,这个过程中的借位判断较为复杂。
求完差值之后就利用INT21H的2号功能输出HH:
MM:
SS:
MS。
三、程式设计框图
四、源程式清单
MainProgram:
CODESEGMENT
MESSDB‘THEPROGRAMRUNNINGTIMEIS:
$’
TIME1DW0
TIME2DW0
SAVE1DD?
SAVE2DD?
SAVE3DD?
MAINPROCFAR
ASSUMECS:
CODE,DS:
CODE
START:
PUSHCS
POPDS
MOVAX,3521H
INT21H
MOVWORDPTRSAVE1,BX
MOVWORDPTRSAVE1+2,ES
PUSHDS
MOVDX,OFFSETINT_21H
MOVAX,SEGINT_21H
MOVDS,AX
MOVAL,21H
MOVAH,25H
INT21H
POPDS
MOVAL,27H
MOVAH,35H
INT21H
MOVWORDPTRSAVE2,BX
MOVWORDPTRSAVE2+2,ES
PUSHDS
MOVDX,SEGINT_27H
MOVDS,AX
MOVDX,OFFSETINT_27H
MOVAL,27H
MOVAH,25H
INT21H
POPDS
MOVAL,20H
MOVAH,35H
INT21H
MOVWORDPTRSAVE3,BX
MOVWORDPTRSAVE3+3,ES
PUSHDS
MOVAX,SEGINT_20H
MOVDS,AX
MOVDX,OFFSETINT_20H
MOVAL,20H
MOVAH,25H
INT21H
POPDS
MOVDX,PGM_LEN/16+20
MOVAX,3100H
INT21H
MAINENDP
Sub_ProgramandFunctionModule:
INT_20HPROCNEAR
CALLFINISH
JMPDWORDPTRCS:
SAVE3
INT_20HENDP
INT_27HPROCNEAR
CALLFINISH
JMPDWORDPTRCS:
SAVE2
INT_27HENDP
INT_21HPROCNEAR
CMPAH,4BH
JELP1
CMPAH,00H
JLELP2
CMPAH,31H
JELP2
CMPAH,4CH
JELP2
JMPLP3
LP1:
CALLBEGIN
JMPLP3
LP2:
CALLFINISH
LP3:
JMPDWORDPTRCS:
SAVE1
INT_21HENDP
StartRecordTimeSub_Program:
BEGINPROCNEAR
PUSHCX
PUSHDX
PUSHAX
MOVAH,2CH
INT21H
MOVCS:
TIME1,CX
MOVCS:
TIME2,DX
POPEX
POPDX
POPCX
RET
BEGINENDP
CalculatandExportFormattedTimeSub_Program:
FINISHPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
CALLTIME_SUB
MOVDX,OFFSETMESS
MOVAX,SEGMESS
MOVDS,AX
MOVAH,09H
INT21H
MOVAX,CS:
TIME1
ANDAX,0FF00H
XCHGAH,AL
CALLVIEW
MOVDL,’:
’
MOVAH,02H
INT21H
MOVAX,CS:
TIME1
ANDAX,00FFH
CALLVIEW
MOVDL,’:
’
MOVAH,02H
INT21H
MOVAX,CS:
TIME2
ANDAX,0FF00H
XCHGAH.AL
CALLVIEW
MOVDL,’.’
MOVAH,02H
INT21H
MOVAX,CS:
TIME2
ANDAX,00FFH
CALLVIEW
POPDX
POPCX
POPBX
POPAX
RET
FINISHENDP
DisplayTimeSub_Program:
VIEWPROCNEAR
PUSHCX
PUSHDX
MOVCL,10
DIVCL
PUSHAX
MOVDL,AL
ADDDL,30H
MOVAH,2
INT21H
POPAX
MOVDL,AH
ADDDL,30H
MOVAH,2
INT21H
POPDX
POPCX
RET
VIEWENDP
CalculatTimeSub_Program:
TIME_SUBPROCNEAR
MOVAH,2CH
INT21H
MOVBX,CS:
TIME2
CMPDL,BL
JGELOP1
DECDH
ADDDL,100
LOP1:
SUBDL,BL
CMPDH,BH
JGELOP2
DECCL
ADDDH,60
LOP2:
SUBDH,BH
MOVBX,CS:
TIME1
CMPCL,BL
JGELOP3
DECCH
ADDCL,60
LOP3:
SUBCL,BL
SUBCH,BH
MOVCS:
TIME1,CX
MOVCS:
TIME2,DX
RET
TIME_SUBENDP
PGM_LENEQU$_MESS
CODEENDS
ENDSTART
五、程式调试结果及分析
下图是运行了驻留程式之后再打开DOS系统中DEBUG功能对其进行测试。
在运行了驻留程式马上会出现一个时间,这是驻留程式本身结束提取系统时间减去0
下图是打开debug并随意操作或者挂起一段时间后退出,发现输出了debug运行的总时间0小时0分22秒85微秒(包括debug的挂起时间)。
六、设计总结
两个礼拜的汇编课程设计,让我们第一次动手写汇编程序。
这次我拿到的是第一个课题,计算程序的运行时间。
虽然说取中断的方法计算程序运行的时间很不准确,因为程序本身运行的时间没有被计算在内,取中断的时间也没有计算进去,但是,即便是这么一个看起来初级的问题,依然难住了我们。
汇编和以前我们学过的C语言不同,它不是基于自然语言的,写程序的时候思路也很不一样。
我们常常被各种寄存器搞得晕头转向,最后不得不通过网络查阅相关资料期望获得帮助。
不过,网上用这种方法计算运行时间的案例很少,很难找到。
我们坚持不懈的努力,终于找到了一个范例。
看到范例才发现,原来我们曾经的思路和范例相差那么远,通过研究和学习,我们终于明白应该如何写这样一个程序才是最好的,才是高效简洁的。
最后,程序终于修正了所有的错误,成功的调试运行了,这对我们的努力是一种肯定,也充分说明了实践对于掌握一门知识,一种能力的过程中起到的重要的作用。
也许没有范例我们依然难以自己写出这个程序,但是,通过这次学习,我们有了新的收获,将来的学习应用中,我们将会变得更加的得心应手。
计算机与通信学院课程设计评分表
课程名称:
汇编语言程式设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编课程设计 测量程序运行时间 汇编 课程设计 测量 程序 运行 时间