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