欢迎来到天天文库
浏览记录
ID:55448846
大小:726.50 KB
页数:19页
时间:2020-05-13
《万年历显示序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、汇编语言课程实习报告实习题目万年历显示程序学生姓名班级(学号)院系信息学院计算机系指导老师叶晓霞提交时间一、课题内容和要求题目描述:用汇编语言编写一个有简单界面显示的日历,要求输入年月日后,将该月的完整日历显示出来,包括星期几,且每月的星期六,日用不同颜色来表示。并且要求显示输入的日期。基本要求:(1)设计一个简单的接受键盘输入年月日信息的界面;(2)输入年月日后,将该月的完整日历显示出来,包括星期几,且每月的六,日。(3)实物演示时要求讲出程序原理和设计思想;(4)程序运行良好、界面清晰。提高要求:(1)界面色彩鲜明、友好,能
2、够突出显示主题;(2)用不同的色彩明显表示出输入的日期;(3)错误输入要有提示及处理,结果显示清晰、合理。二、需求和思路分析本课题要求设计一个显示万年历的程序,即要输入年月日后,将这个月的完整日历显示出来,包括这个月的每一天是星期几也要显示。公历每年有12个月,其中1、3、5、7、8、10、12月为大月,每月31天;4、6、9、11月为小月,每月30天。公历有闰年平年之分,若某年是闰年,则该年2月有29天,全年有366天;若某年是平年,则该年2月有28天。那么首先要做的就是完成通过键盘输入得到要显示的年月日,能够将年月日储存起来
3、同时将输入的日期显示出来这个功能。在这里可以调用INT21H的0AH的功能将键入的一串字符送入用户程序的缓冲区,0AH功能要求键入的字符串必须以“回车”做为结束标志,换句话说,按下回车键后,本次功能调用结束。由于题目的要求错误输入要有提示及处理,所以也要考虑到所输入的年月日是否有符合日常逻辑,如果输入不正确,要显示出错误输入信息,并且提示重新输入年月日。本课题的重点的地方和难点的地方就是怎么将输入的日期的当月的完整日历给显示出来。那么就得在屏幕上先显示出星期一到星期日,在设计时将SUN…SAT在屏幕上显示出来,然后在下面依次显示
4、完这个月的所有天数,而且要正确显示。在显示每个月的第一天的时候,首先要能够确定第一天是星期几。这样才能够正确的向下显示,并且显示这个月的最后一天不能够超出这个月的最大天数,在这里也就要考虑到各个月不同天数的情况,尤其是二月,闰年的二月有29天。在确定输入的那个月的第一天是星期几可以通过蔡勒公式求得,计算某一天是星期几,如下:W=[C/4]-2C+y+[y/4]+[13*(M+1)/5]+d–1,C是世纪数减1,y是年份后两位,M是月份,d是日数,计算出来的结果模取7。求得这个月的第一天是星期几后,会发现如果是星期一的话,最后算得
5、的W的值为1,依次类推,星期日的W值为0,那么可以根据W值来确定要显示的行和列,最后限定一下要显示的这个月的最后一天,那么日历就可以正确的显示出来了。在用蔡勒公式计算的时候要注意1月和2月按上一年的13月和14月来算,这时C和y均按上一年取值。日历的显示也要注意光标的定位。设置星期六、日两列的字体为红色,打印出当前显示的是哪一年的哪一个月,打印出MON,TUR等字样,以标注哪天是星期几。根据月的大小进行循环的输出日期,在此过程中,要注意一位数与两位数对格式的影响,最后显示出来的界面要清洁。三、概要设计1.程序系统整体流程图:2.
6、程序系统每个子程序的流程图(1)二进制转十进制子程序(2)判断闰年子程序(3)求输入的日期对应月的第一天是星期几四、详细设计1、输入年月日模块本课题要求输入年月日就显示该月的日历,首先要做的是通过键盘来输入日期,在程序中使用INT21H的0AH的功能调用,它的功能是等待键入一串字符送入用户程序的数据缓冲区。0AH功能要求键入的字符串以“回车”做为结束标志,按下回车以后,本次功能调用结束,光标返回当前行始格。“回车”符留在缓冲区当中。对缓冲区的格式有如下要求,缓冲区要设置在程序数据段,调用前,缓冲区的首址偏移量应赋给DX寄存器。缓
7、冲区首单元应预置“允许接收的字符个数”(包括回车键在内)。用户键入回车之后,由0AH功能把实际键入的字符个数(不包括回车键)写入STR1+1单元。键入的字符串从STR1+2单元开始依次存放。因此缓冲区的容量要不小于键入的键入的串的长度(包括回车键)+2。在程序中这么定义的:STR1DB9DB?DB9DUP(?)比如要输入20090327,这样只能输入像这种格式的8个字符。这样输入就完成了,但是由于输入的是年月日,也要判断其是否符合现实。也就要对输入的年月日进行处理,如果输入不正确就提示出错,并且重新输入。判断输入的是否正确有以下
8、几个方面要考虑,首先输入的月只能在01-12里面的情况,日的最小天数要不小于1,最大不能超过刚才输入的月的最大天数。在程序里,我是通过这样的方法实现的,我把12个月的天数定义为BUF1DB31,?,31,30,31,30,31,31,30,31,30,31,其中
此文档下载收益归作者所有