2022年2022年湖北理工汇编语言显示系统日期时间程序设计课程设计报告 .pdf
学号:* 课 程 设 计题目显示系统日期时间程序设计教 学 院计算机学院专业计算机科学与技术班级1 班姓名*指导教师姚莉2011 年09 月30 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 1 目录一 概述 . 21.1 课程设计的目的. 21.2 课程设计的要求. 2二 总体方案设计. 3三 详细设计 . 43.1 程序流程图 . 43.2 时间显示子程序代码. 5四 程序的调试与运行结果说明. 64.1 程序运行结果. 6五 课程设计总结. 8参考文献 . 10 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 2 一 概述1.1 课程设计的目的1理解和掌握该课程中的有关基本概念,程序设计思想和方法。2培养综合运用所学知识独立完成课题的能力。3培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。4掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。5掌握利用单片机接口技术解决问题的基本方法。6掌握和理解对知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力。1.2 课程设计的要求1查阅相关资料,自学具体课题中涉及到的新知识,能够按照老师的要求对待设计的系统的程序流程图进行正确地绘制。3在老师的指导下,能够写出相应的源程序代码,采用结构化、模块化程序设计方法,功能要完善,界面要美观。4所设计的系统原则上要能够运行无误,结果准确。在条件允许的情况下,能够最终将系统所要实现的功能演示出来。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 3 二 总体方案设计通过主函数中调用 2种宏和 2种功能函数分别为调用系统时间的函数和调用系统日期函数来实现全部显示系统时间和日期。功能宏和函数如下:宏 1:CLEAR_SCREEN MACRO:它实现了清屏和修改界面属性的功能,使界面更美观。宏 2:SHOW MACRO:它实现了显示定义在数据段中的字符串的功能,也就是显示提示语句。函数 1:DATEDISPLAY:它实现了显示日期的功能。函数 2:TIMEDISPLAY :它实现了显示时间的功能。函数 EXIT:函数来退出程序。在程序设计中我承担的是系统时间显示的程序设计,通过被主函数调用来显示系统时间。程序中分别用CH,CL,DH 来存放时分秒,来传入并显示系统时间。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 4 三 详细设计3.1 程序流程图图 1 ;程序流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 5 3.2 时间显示子程序代码TIMEDISPLAY PROC NEAR MOV AH,2CH ;调用 DOS取系统时间INT 21H MOV BX,10 LEA DI,TIMEDIS MOV AL, DH ; DH 存时XOR AH,AH DIV BL ADD AX,3030H MOV DI+1,AX MOV AL,CL ;CL 存分XOR AH,AH DIV BL ADD AX,3030H MOV DI+6,AX MOV AL, CH ; CH 存秒XOR AH,AH DIV BL ADD AX,3030H MOV DI+11,AX SHOW TIMEDIS RET TIMEDISPLAY ENDP 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 12 页 - - - - - - - - - 6 四 程序的调试与运行结果说明4.1 程序运行结果图 2 修改前程序运行结果图 3 修改后程序运行结果名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 12 页 - - - - - - - - - 7 程序中跳出界面窗口提示, 在出现的提示信息中输入大写字母“D”或者“d”即显示系统当前日期;输入大写字母“T”或者“ t ”, 可显示系统当前时间;输入大写字母“ Q ”或者“ t ”即结束程序,输入错误是显示”INPUT ERROR! ”, 则重新输入。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 12 页 - - - - - - - - - 8 五 课程设计总结根据设计要求, 这个程序基本实现所要求的功能。但由于短暂的设计时间和过于零散的汇编知识暴露出许多不足之处,如我们显示的时间是静态的, 不能动态显示连续的时间,界面太过单调。但是程序也有他相对的特点如冗余低,能判断是否输入错误,和对应的时间和日期的大小写输入。设计要求完成一个显示系统当前日期和时间的汇编程序。即通过输入键盘上某个按键来显示系统的日期和时间或者退出程序。(如:在出现的提示信息中输入大写字母“ D”或者“d”即显示系统当前日期;输入大写字母“T”或者“t ”,可显示系统当前时间;输入大写字母“Q ”或者“ t ”即结束程序。)所以在程序的开始,就已经先定义了清屏上卷宏定义,制定了光标位置。 考虑到程序中多次要显示字符串,所以将显示字符串也作为一个宏定义,避免了代码冗长。在整个程序中,只有两个重要子程序, 分别为日期显示子程序和时间显示子程序。而在程序编写的过程中我们遇到了许多的问题,如:如何用汇编语言取系统日期和系统时间和怎么显示出来, 为了防止代码太冗长, 我们选择用宏来显示相应的字符串和界面指令。在编写日期显示子程序时, 先取 CX中存的系统当前日期,存在AX中,作为被除数,除以 10,给各位加上 30H ,变为它的 ASCII 码。使存日月的 DX入栈,以保护日月。指针指向 DATEDIS 字符串的最后一位, 即年的最后一位, 循环 4 次,将年的 ASCII 码依次放入字符串 DATEDIS 00-00-0000 的0000位,随后DX出栈还原。取 DL中存的日,放入 AL中,将高位 AH清零,AX作为被除数,重复转换 ASCII 码的步骤,指针减4,指向字符串 DATEDIS 00 - 00 - 0000的日的第一位,将转换后的日的ASCII 码放进 00位。接着取 DH中的月,重复日的步骤,直到将月放进字符串。然后调用显示宏定义, 将转换后的日期显示出来。在显示月的子程序中,在AX除以 BL之后,即执行 DIV BL,其商送 AL,余数送 AH ,如 6 月存放与 DH中,除以 BL之后,商为 0,余数为 6。分别存放在 AL和 AH之中,加上 3030H之后, AX中的内容为 3630H 。由于定义 DATEDIS 为字节型,故存放时 30H存放在低字节, 36H存放在高位字节,显示时, 0字符在第一个显示,6字符在第二个显示,才会显示06 。所以, SI 指针应指向第一个0 ,即第一个字节空间。同理,显示日和时间的时候也需要注意出现这种情况。在显示完日期, 时间后,若要退出系统, 则只能按 Q退出,按其他键不起用。做这个程序的过程中,我加深了对某些指令的理解,如push,pop,jmp 指名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 12 页 - - - - - - - - - 9 令。本次实验, 我觉得最大的收获便是慢慢学会了独立思考问题及解决问题,并且最终将自己的想法通过程序代码来实现,我感觉这是对自我的一种突破。乍一看到这个题目,感觉挺简单啊,不就是用一个字符和规定的三个字符相比较,分别调用子程序么?可是真正在编写程序的过程中,才发现想的容易, 写起来却是另一会事,正如杜甫所说的“书到用时方恨少,事非经过不知难。”其实对于这种情况,我们极容易犯眼高手低的毛病,这就导致我们失去了多次自己动手操作实践的机会,一味的只是看老师演示演示再演示。通过这次试验,我知道了在以后的学习过程中,一定要自己去实践,在实践中能得到更加深刻的认识和体会,对知识能够更好更深刻的掌握。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 12 页 - - - - - - - - - 10 参考文献1 沈美明, IBM-PC 汇编语言程序设计(第二版),北京,清华大学出版社,2010 年 9 月。2 刘丽莉,汇编语言程序设计(第一版),北京,北京大学出版社,2010 年 11 月。3 白小明,汇编语言程序设计,北京,中国铁道部出版社,2009 年 8 月。4 布鲁姆, Professional Assembly Language,北京,机械工业出版社,2006 年 1 月。5 苏帆,汇编语言程序设计,北京,北京航空航天大学出版社,2005 年 2 月。6 王爽,汇编语言(第二版 ),北京,清华大学出版社,2008 年 4 月。7 欧文, Intel 汇编语言程序设计(第五版),北京,电子工业出版社,2007 年 9 月。8 罗云彬,琢石成器:Windows 环境下 32 位汇编语言程序设计(第一版),北京,电子工业出版社, 2009 年 6 月。9 杨季文, 80 x86 汇编语言程序设计教程,北京,清华大学出版社。10 廖建明,汇编语言程序设计(第一版),北京,清华大学出版社,2009 年 10 月。11 卓拉,计算机组成及汇编语言原理(第一版),北京,机械工业出版社,2010 年 1 月。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 12 页 - - - - - - - - - 11 汇编语言课程设计成绩评定表姓名* 性别男专业班级09 计算机科学与技术( 1)班课程设计题目:显示系统日期时间程序设计课程设计答辩或质疑记录: (手写部分)1.取系统时间时是如何实现这个功能的,返回值在哪里?答:通过调用 DOS 功能取系统时间, CH 存时, CL 存分, DH 存秒。2.显示是是以时分秒显示的,可不可以改成秒分时?答:在显示系统时间是是CH 存时, CL 存分, DH 存秒分别一个个先后传入再显示输出时分秒的格式的。要改成秒分时的格式输出只需将改变传入顺序,即DH 存秒再 CL 存分再 CH 存时传入。1. 最后的时间的 ASCII 码序列分别存放在哪里,如何显示输出的?答:最后时间的ASCII 码序列先后传给AX中,再将AX先后把时分秒传入DI+1,DI+6,DI+11 中,在调用宏 SHOW TIMEDIS 显示时间。成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字:年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 12 页 - - - - - - - - -