实时日历时钟显示系统的设计.docx
《实时日历时钟显示系统的设计.docx》由会员分享,可在线阅读,更多相关《实时日历时钟显示系统的设计.docx(13页珍藏版)》请在冰点文库上搜索。
实时日历时钟显示系统的设计
微机原理及应用课程设计任务书
20xx-20xx学年第x学期第xx周一xx周
题目I/实时日历时钟显示系统的设计
内容及要求
内容:
实时日历时钟显示系统
要求:
设计一个实时日历时钟显示系统的程序。
用“年/月/日”,“时:
分:
秒”
(都是两位)的形式连续显示系统时间
进度安排
课程设计内容
时间分配
方案论证
1天
分析、设计、调试、运行
3天
检查、整理、写设计报告、小结
1天
合计
5天
学生姓名:
xx
指导时间:
xxxx
指导地点:
xxxx
任务下达
任务完成
考核方式
1.评阅V
2.答辩V3.实际操作口4./其它口
指导教师
系(部)主任
注:
1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份
备查
2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档
摘要
此次微机原理课程设计要求设计一个实时日历时钟显示系统。
本程序利用DOS中断2AH号功能调用取系统年月日,再逐个显示各数据,利用2CH号功能调用取系统时间,逐个显示各数据。
用“时:
分:
秒”储E是两位)的形式连续显示系统时间,并利用计算机提供的软件调试工具对所编写程序进行调试,记录下整个调试分析的过程与运行结果。
任务安排:
主程序:
xx:
主体程序和流程设计
XX:
日历调用显示系统
XX:
时间调用显示系统
子程序:
XX:
显示两位数字的子程序
Notableofcontentsentriesfound.
课程名称:
实时日历时钟显示系统的设计
课程内容:
实时日历时钟显示系统
/\
要求:
设计一个实时日历时钟显示系统的程序。
用“年/月/日”,“时:
/\
分:
秒”(都是两位)的形式连续显示系统时间
三、小组组成:
成员:
\
XX,
XX,
XX,
XX
任务安排:
主程序:
XX:
主体程序和流程设计
XX:
日历系统
XX:
时间系统
子程序:
\XX:
显示两位数字的子程序
四、设计思想
汇编语言程序设计要求综合以前所学知识,根据设计具体要求分析问题,将问题分解成一个一个的步骤,每步用汇编语言中的指令性语句,按先后顺序表达,设计一个不仅要满足要求,能正常运行,实现指定功能的程序;还应满足结构化、简明、易读、易调试、易维护、执行速度快、占用存储空间尽量少的好程序。
(1)日历的显示:
本程序主要使用DOS功能2AH号调用取系统日
\
期(年、月、日)送屏幕显示。
出口参数:
CX=年,。
日=月,DL二日。
再通过子程序显示。
(2)时钟显示:
本程序主要使用DOS功能2CH号调用取系统时间
(时、分、秒、百分秒)送屏幕显示。
出口参数:
CH=小时,8=分
钟,。
卡秒,DL=百分秒。
再通过子程序显示。
(3)连续显示:
加入一个循环,使程序不停刷新显示时间的变化,
(4)子程序的说明,子程序的入口为:
AL,输出一个两位数
五、程序流程图及软件介绍
1、下面是程序的流程图。
显示提示(9号功能调用)“THEDATAIS:
取系统日期(2AH号功能调用)年、月、日
利用子程序,逐个显示年/月/日
显示提示(9功能号调用)“THETIMEIS:
取系统时间(2CH号功能调用)时、分、秒、百分秒
1
利用子程序,逐个显示时:
分:
秒
1
2、程序利用2AH号功能调用取系统年月日,CX=年,DH月,DL=日,然后把这些数据保存起来,再调用子程序,逐个显示各数据;然后利用2CH号功能调用取系统时间,CH小时,8=分钟,DH秒,保存号各个数据,之后调用子程序,逐个显示各数据。
3、本程序是一个无限循环程序,显示完了时间后,又开始重新从系统取时间进行显示。
六、调试
3)关闭对话框,打开可执行问件A.exe,显示时间
七、总结
由于是第一次做课程设计,程序调试了好几次才成功,过程虽然辛苦,但完成课设后还是很有成就感的。
课设是一个把理论和实践相结合的过程,通过这次的课程设计,我学会了很多。
对于平时上课的知识,以前总以为自己学的很多,其实不是的。
上课所学的汇编知识,都只是一些基础,到真的要用汇编语言做点东西的时候,才发现很多知识不懂、不知道、要查阅很多的资料文献才能做成一个课程设计。
经过一周的课程设计,我觉得自己对于这门课程有了很大的了解和认识。
我们本次的课题是设计一个实时日历时钟显示系统,要求用“时:
分:
秒”的形式连续显示系统时间,并利用计算机提供的软件调试工具对所编写程序进行调试,记录下整个调试分析的过程与运行结果。
此次设计中,我们首先是调用系统的日期和时间,然后把这些数据显示出来,为了让这个时间能够连续显示,要再采用一个循环,不断地取系统日期和时间,进行刷新操作,以保证日期和时间能够实时更新和显示。
在设计的过程中,首先为了避免寄存器冲突的问题,在设计子程序时,应把所有用到的寄存器都入栈保存。
而且可以把寄存器当作变量来看待,有时候它存储的是数据变量(如把BP当作字符个数的记数器),而有时候它存储的是地址变量(如DI、SI);内存中的数据,按它们的结构关系,则可以把它们看待成数组,我们对数组,可以通过首地址来访问它们。
传递参数和结果的,一般可以用寄
存器,也可以用一段内存空间来传递,特别是需要传递的数据较多的时候。
在
设计子程序时,往往涉及到许多的循环,这时候就要注意把不该循环的变量要放在循环体外。
通过这次课程设计,我巩固所了学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用DEBU指令。
在整个程序的编写中,调试
占了很大部分的时间。
要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。
总而言之,这次课程设计让我收获很大!
八、参考文献
1、郑初华•汇编语言、微机原理及接口技术(第3版)•北京:
电子工业出版社.2010.
2、周明德.微机原理与接口技术实验指导与习题集.北京:
人民邮电出版社.2002
3、丁新民.微机原理及基应用.北京:
高等教育出版社.1996
4、刘乐善.微型计算机接口及应用.武汉:
华中科技大学出版社.2000
5、朱定华.微机原理、汇编与接口技术学习指导.北京:
清华大学出版社.2006
&荆淑霞.微机原理与汇编语言程序设计.北京:
水利水电出版社.2005
附录
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
・************************
循环的起点
AGAIN
MOV
DH,0
MOV
DL,0
MOV
AH,02H
;设置光标的位置,DH=字符行号,
;DL=字符列号,BH=页号
MOV
BH,0
INT
10H/
***********************^年月日的显^示
MOV
DX,OFFSETMSG1;显示提示“THEDATAIS:
”
/MOV
AH,09
;9号功能调用\
/INT
21H
MOV
AH,2AH
;取日期,CX=年,DH月,DL二日
INT
21H
MOV
DAY,DL
;数据保存到自定义参数里\
MOV
MON,DH
MOV
AX,CX
;对年份数据(例如2010)进行处理
MOV
BX,100
DIV
BL
;无符号数除,商送AL-20,余数送AH=10
CALL
NUMBER
;子程序调用,显示年份的第一二个数字20
;子程序NUMBE代码在最下面,子程序功
;能是用来显示一个十进制两位数
MOV
YEAR,AH
;余数送入YEAR
MOV
AL,YEAR
;子程序入口参数设置AL=10
CALL
NUMBER
;字程序调用,显示年份的第三四个数字10
MOV
DL,'/'
;‘/'间隔
MOV
AH,02
INT
21H
\MOV
AL,MON
;调用子程序,显示月
\CALL
NUMBER
\MOV
DL,'/'
'MOV
AH,02
INT
21H
MOV
AL,DAY
;调用子程序,显示日/
CALL、
NUMBER
*******************
'时间的显示//
MOV
DX,OFFSETMSG2;显示提示“THETIMEIS:
”
MOV
AH,09
INT
21H
MOV
AH,2CH
\;取时间,CH小时,
;CL^钟,DH秒,DL=S分秒
INT21H
MOV
HOUR,CH
;参数保存
MOV
MIN,CL
MOV
SEC,DH
MOV
FSECQL
MOV
AL,HOUR
;调用子程序,
显示小时
CALL
NUMBER
MOV
DL,':
'
MOV
AH,02
INT
21H
MOV
AL,MIN
;调用子程序,
显示分钟
CALL
NUMBER
/MOV
DL,':
'
MOV
AH,02
INT
21H
MOV
AL,SEC
;调用子程序,
显示秒
CALL
NUMBER
・*********************脚匕转到
AGAIN
JMP
AGAIN
MOV
AH,4CH
INT
21H
・*********************^子程^序
功能:
用来显示-
一个十进制两位数,入口参
数为AL中的值
NUMBERPROC
NEAR;
段内子程序
\PUSH
AX;
保护现场
\PUSH
DX
\PUSH
BX
XOR
AH,AH;
AH清0
AAM
把AL分解为十位存于AH,个位存于AL
MOV
DH,AL;
暂存个位
MOV
DL,AH;
显示十位
ADD
DL,30H
MOV
AH,02
INT
21H
MOV
DL,DH;
显示个位
ADD
DL,30H
MOV
AH,02
INT
21H
POP
BX;
恢复现场
POP
DX
POPAXRET
NUMBERENDP
CODEENDS
ENDSTART
程序结束
・**************************