1、 信息科学与技术学院信息科学与技术学院 微机原理与接口技术课程设计微机原理与接口技术课程设计 题目名称题目名称: 电子万年历电子万年历 学生姓名学生姓名: 学学 号:号: 专专 业:业: 计算机科学与技术计算机科学与技术 班班 级级: 0909 级(级(1 1)班)班 指导教师指导教师: 完成日期:完成日期: 20122012 年年 1 1 月月 1111 日日 微机原理与接口技术课程设计 2 目录目录 目录目录 一、课程设计要求 - 3 二、程序流程图 - 3 三、程序主要功能模块 - 4 1.画出该程序的界面 . 4 2.写出所有非汉字字符 4 3.写出汉字字符 . 4 4.填充公历及农历
2、的信息 5 5.用户输入一个需要显示的新日期 . 5 四、主要技术路线 - 6 1.开发工具 6 2.主要算法 6 3.重要指令 7 五、系统的难点及解决方案 - 8 1.算法 8 2.由思想到程序的转换 8 六、总结与体会 - 9 七、参考文献 - 9 附录(源程序) - 11 微机原理与接口技术课程设计 3 万年历万年历 一、课程设计要求一、课程设计要求 DOS 下万年历(8086 汇编) DOS 运行的日历,支持农历: 1 a. 能实现计时功能 2显示年、月、日、进、分、秒、星期 扩展功能:实现公历与阴历转换 二、程序流程图二、程序流程图 微机原理与接口技术课程设计 4 三、程序主要功能
3、模块三、程序主要功能模块 本万年历程序正确实现从 1901 年 1 月 1 日至 2050 年 12 月 31 日的公历与 农历查询,包括公历年,月,日,星期,农历干支年,月,日。本程序共有一个 主过程,二十个子过程,73 个标号,1460 行,27185 字,主要分成以下五大模 块: 1.画出该程序的界面画出该程序的界面 A.功能及不足: 在该模块的设计中,主要令其实现程序的界面,即该万年历程序的边框部分。由 于该程序做的比较仓促,界面设计相对简单,我只是框出一个 7*7 的矩形区域, 每个小区域都是 3*3(像素大小为 48*48)大小的。其中第一行用于显示星期信 息(日,一,) ,以下六
4、行用于分别在相应位置显示一整个月的月历。 B.子过程: SETMODE:设置显示模式至 INT 10H(AH=00H,AL=12H)的 640*480 图形 16 色 模式 CLEAR:清屏函数,实现将屏幕上卷一屏的功能 WRITEROW:画出程序主体框架的所有横线 WRITECOL:画出程序主体框架的所有竖线 2.写出所有非汉字字符写出所有非汉字字符 A.功能及不足: 在该模块设计中, 主要在界面中填充非汉字字符, 包括标题部分, 版权部分, 月历部分,月历标题部分和提示输入部分。我们知道,月历中每行最多显示 7 天,而第一行要显示的天数是由该月 1 日的星期数来决定的,而每个月又有可能 有 28,29,30,31 天,这样,导致输出的月历中,有可能是 5 行,也有可能是 6 行,而我为了简化程序的流程直接准备了 6 行的空白来填充公历的月历,这就 有可能导致有的时候,画面中最后一行是空白的,影响显示效果。 B.子过程: WRITECHAR:使用 INT 21H(AH 13H)功能,在图形模式下显示字符串 WRITENORMAL:调用 WRITECHAR 子过程,显示所有非汉字字符串 COVTITLE3:用于将年月日的信息转换成可以输出的字符串 3.写出汉字字符写出汉字字符 A.功能及不足: 在该模块设计中,