1、微机原理课程设计课程设计任务书学生姓名: 黎 健 专业班级: 电气0804 指导教师: 张 锐 工作单位: 自动化学院 题 目: 计算机时钟模拟显示软件设计 初始条件:1.用于调试程序的IBM兼容PC机一台;2.安装DOS/WIN98操作系统或运行于DOS/ WIN98兼容方式;3.EDIT 等文本编辑器输入80x86汇编程序,MASM 5.0编译及链接程序。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.使用汇编语言设计一个运行于计算机的时钟模拟显示软件,软件应实现模拟显示时钟,要求至少有一种动态时钟显示效果如七段码管形状显示或旋转指针式指示效果等。可以
2、附加显示花边背景和日期信息。2.说明书撰写格式应符合课程设计说明书统一书写格式。时间安排:1.程序框图设计,3天2.编程,4天3.调试,3天4.编写设计报告,4天指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日摘要汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言是一种功能很强的程序设计语
3、言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。本文将介绍用汇编语言设计一个计算机时钟模拟显示软件。 目录1 基本功能描述 42
4、 设计思路 42.1 设计任务及要求 42.2 程序流程图 53 软件设计 63.1 背景格局设计 63.2 文本方式设置 63.3 获取系统日期和时间 73.4 日期显示子程序 73.5 时间显示子程序 94 调试过程和运行结果及分析 114.1 调试过程 114.2 运行结果显示 114.3 结果分析 135 心得体会 146 参考文献 157 附录 16源程序 16本科生课程设计评定表 22计算机时钟模拟显示软件设计1 基本功能描述需要设计的计算机时钟模拟显示程序是基于汇编语言的WINDOWS应用程序设计,程序运行成功后,页面出现数字式的时钟,数字钟的钟面为一个规则的矩形。当从键盘上输入
5、t时,其显示时间的格式是:时:分:秒,小时为24进制,分钟和秒都是60进制;当从键盘上输入d时,其显示时间的格式是:年月日。此模拟时钟外观简洁,功能和实际运用到的时钟基本一样,用起来非常方便。 2 设计思路2.1 设计任务及要求(1)使用汇编语言设计一个运行于计算机的时钟模拟显示软件,软件应实现模拟显示时钟,要求至少有一种动态时钟显示效果如七段码管形状显示或旋转指针式指示效果等。可以附加显示花边背景和日期信息。(2)说明书撰写格式应符合课程设计说明书统一书写格式。2.2 程序流程图根据以上程序流程相应的说明,在程序编写前,我们应先画出程序流程图,这有助于我们理清思路,本程序的流程图如图1所示。
6、图1计算机时钟模拟程序流程图3 软件设计3.1 背景格局设计如果数字式时钟不加一些背景加以修饰,就会显得单调,所以我们可以加花边或其它的一些东西加以修饰,使他看起来更加舒适和赏心悦目。对背景格局的初始化程序段如下:SPACE DB 2000 DUP ( )PATTERN DB 6 DUP ( ),0C9H,26 DUP (0CDH),0BBH,6 DUP ( ) DB 6 DUP (#),0BAH,26 DUP (20H),0BAH,6 DUP (#) DB 6 DUP ( ),0C8H,26 DUP (0CDH),0BCH,6 DUP ( ) BUFF1 DB 7 DUP (:),24 DU
7、P ( ) BUFF2 DB 21 DUP ( ) STR DB 0DH,0AH, Please input date(d) or time(t) or quit(q):$ 3.2 文本方式设置文本显示方式原理如表1所示。表1 常用的几种显示方式AH调用参数AL显示方式00004025黑白文本方式00014025彩色文本方式00028025黑白文本方式00038025彩色文本方式0004320200彩色文本方式0005320200黑白文本方式0006640200黑白文本方式这里我们采用4025黑白文本方式,所以设置显示方式的程序段如下:MOV AX,0001H INT 10H3.3 获取系统日
8、期和时间系统日期的调用程序段:MOV AH,2AH INT 21H系统时间的调用程序段:MOV AH,2CH INT 21H3.4日期显示子程序 日期显示子程序模块设计功能为实时调用系统日期并将其显示。系统日期调用应用2AH号系统功能,将年月日都以二进制存入各寄存器中,要想显示出来必须转换成ASCII码才行。具体程序如下:DATE PROC NEAR DISPLAY: MOV AH,2AH ;取日期 INT 21H MOV SI,0 MOV AX,CX MOV BX,100 DIV BL MOV BL,AH CALL BCDASC1 ;日期数值转换成相应的ASCII码字符 MOV AL,BL
9、CALL BCDASC1 INC SI MOV AL,DH CALL BCDASC1 INC SI MOV AL,DL CALL BCDASC1 MOV BP,OFFSET BUFF2 MOV DX,0C0DH MOV CX,20 MOV BX,002EH MOV AX,1301H INT 10H MOV AH,02H ;设置光标位置 MOV DX,0F2BH MOV BH,0 INT 10H MOV BX,0018H BB1: MOV CX,0FFFFH ;延时 BB2: LOOP BB2 DEC BX JNZ BB1 MOV AH,01H ;读键盘缓冲区字符到AL寄存器 INT 16H J
10、E DISPLAY JMP START MOV AX,4C00H INT 21H RETDATE ENDP3.5 时间显示子程序时间显示子程序模块设计与日期显示子程序类似,系统时间调用应用2CH号系统功能。具体程序如下:TIME PROC NEAR DISPLAY1: MOV SI,0 MOV BX,100 DIV BL MOV AH,2CH ;取时间 INT 21H MOV AL,CH CALL BCDASC ;将时间数值转换成ASCII码字符 INC SI MOV AL,CL CALL BCDASC INC SI MOV AL,DH CALL BCDASC MOV BP,OFFSET BU
11、FF1 MOV DX,0C0DH MOV CX,20 MOV BX,002EH MOV AX,1301H INT 10H MOV AH,02H MOV DX,0F2BH MOV BH,0 INT 10H MOV BX,0018H DD1: MOV CX,0FFFFH DD2: LOOP DD2 DEC BX JNZ DD1 MOV AH,01H INT 16H JE DISPLAY1 JMP START MOV AX,4C00H INT 21H RET TIME ENDP4 调试过程和运行结果及分析4.1 调试过程(1)编写源文件,命名为shizhonglijian.asm,并保存于默认文件夹
12、中。(2)打开文件shizhonglijian.asm,编译使之生成目标文件,检查源程序中的错误,并改正,直到编译无错误出现为止。(3)点击菜单栏中运行里的连接,再点击运行,输入相应的字符就会显示相应的结果。4.2 运行结果显示(1)当从键盘输入d时,其显示结果如图2所示。图2 输入d时的界面显示图(2)当从键盘输入t时,其显示结果如图3所示。图3 输入t时的界面显示图(3)当从键盘输入q时,其显示结果如图4所示。图4 输入q时的界面显示图4.3 结果分析经验证,当从键盘上输入d时,电子钟显示日期,且与计算机系统保持一致;当从键盘上输入t时,电子钟显示时间,也与计算机系统同步;当从键盘上输入q
13、时,退出显示,返回DOS系统。综上所述,本次课程设计基本达到设计任务书要求。5 心得体会经过以上步骤,课程设计所要求设计的计算机时钟模拟显示设计软件便成功完成了,它能显示数字式的时钟,并且与计算机系统时间保持一致。整个页面简洁清晰,方便用户读取,且操作简捷,符合课程设计中的各项要求。通过这次课程设计,我们对日常生活中司空见惯的时钟的工作原理有了一个比较深入的了解,将书本中的知识更好地与实际生活中的应用结合在了一起。在这次微机原理的课程设计中,我们在汇编语言环境下,编写Windows应用程序。汇编语言定义了一个标准的应用程序框架,为我们提供了大量可用代码,隐藏了程序设计中的许多复杂工作,在程序编
14、写和调试过程中,掌握了程序调试方法,大大提高了编程能力和动手能力。在程序的调试过程之中,可以说是困难重重,特别是对数字式时钟背景的绘制,还要考虑数字式的时钟与计算机系统时间保持一致。在不断的改正错误和调试的过程之中,所要求设计的计算机时钟模拟显示总算是运行成功。到此为止,我们接近两周的课程设计也告一段落。通过这次课程设计,使我认识到理论与实际相结合的重要性,对课本上的只是在实际生活中的运用也有了进一步的了解,同时基本上能够掌握汇编语言编程中的对话框编程的步骤,可以说是从中受益匪浅。6 参考文献1 周佩玲 彭虎傅 忠谦 微机原理与接口技术.电子工业出版社.2007 2 朱金均 麻新旗 微机原理及
15、应用技术(第二版).机械工业出版社.20053 王爽 汇编语言.第2版. 北京.清华大学出版社.20084 沈美明 温冬婵 IBM-PC汇编语言程序设计.清华大学出版社.19935 丁辉 汇编语言程序设计.第3版.电子工业出版社.20097 附录源程序 STACK SEGMENT STACK DW 200 DUP (?) STACK ENDS DATA SEGMENT SPACE DB 2000 DUP ( ) PATTERN DB 6 DUP ( ),0C9H,26 DUP (0CDH),0BBH,6 DUP ( ) DB 6 DUP (#),0BAH,26 DUP (20H),0BAH,6
16、 DUP (#) DB 6 DUP ( ),0C8H,26 DUP (0CDH),0BCH,6 DUP ( ) BUFF1 DB 7 DUP (:),24 DUP ( ) BUFF2 DB 21 DUP ( ) STR DB 0DH,0AH, Please input date(d) or time(t) or quit(q):$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,0001H ;设置显示方式为40*25彩色文本方式 INT 10H MOV AX,DATA MOV DS,AX
17、MOV ES,AX MOV BP,OFFSET SPACE MOV DX,0D00H MOV CX,2000 MOV BX,0021H MOV AX,1301H INT 10H MOV BP,OFFSET PATTERN ;显示矩形条 MOV DX,0B00H MOV CX,120 MOV BX,002EH MOV AX,1301H INT 10H LEA DX,STR ;显示提示信息 MOV AH,9 INT 21H MOV AH,1 ;从键盘输入单个字符 INT 21H CMP AL,64H ;AL=d? JNE AA1 CALL DATE ;显示系统日期 AA1: CMP AL,74H
18、;AL=t? JNE AA2 CALL TIME ;显示系统时间 AA2: CMP AL,71H ;AL=q? JNE START MOV AH,4CH ;返回dos状态 INT 21H DATE PROC NEAR ;显示日期子程序 DISPLAY: MOV AH,2AH ;取日期 INT 21H MOV SI,0 MOV AX,CX MOV BX,100 DIV BL MOV BL,AH CALL BCDASC1 ;日期数值转换成相应的ASCII码字符 MOV AL,BL CALL BCDASC1 INC SI MOV AL,DH CALL BCDASC1 INC SI MOV AL,DL
19、 CALL BCDASC1 MOV BP,OFFSET BUFF2 MOV DX,0C0DH MOV CX,20 MOV BX,002EH MOV AX,1301H INT 10H MOV AH,02H ;设置光标位置 MOV DX,0F2BH MOV BH,0 INT 10H MOV BX,0018H BB1: MOV CX,0FFFFH ;延时 BB2: LOOP BB2 DEC BX JNZ BB1 MOV AH,01H ;读键盘缓冲区字符到AL寄存器 INT 16H JE DISPLAY JMP START MOV AX,4C00H INT 21H RET DATE ENDP TIME
20、 PROC NEAR ;显示时间子程序 DISPLAY1: MOV SI,0 MOV BX,100 DIV BL MOV AH,2CH ;取时间 INT 21H MOV AL,CH CALL BCDASC ;将时间数值转换成ASCII码字符 INC SI MOV AL,CL CALL BCDASC INC SI MOV AL,DH CALL BCDASC MOV BP,OFFSET BUFF1 MOV DX,0C0DH MOV CX,20 MOV BX,002EH MOV AX,1301H INT 10H MOV AH,02H MOV DX,0F2BH MOV BH,0 INT 10H MOV
21、 BX,0018H DD1: MOV CX,0FFFFH DD2: LOOP DD2 DEC BX JNZ DD1 MOV AH,01H INT 16H JE DISPLAY1 JMP START MOV AX,4C00H INT 21H RET TIME ENDP BCDASC PROC NEAR ;时间数值转换成ASCII码字符子程序 PUSH BX CBW MOV BL,10 DIV BL ADD AL,0 MOV BUFF1SI,AL INC SI ADD AH,0 MOV BUFF1SI,AH INC SI POP BX RET BCDASC ENDP BCDASC1 PROC NE
22、AR ;日期数值转换成ASCII码字符子程序 PUSH BX CBW MOV BL,10 DIV BL ADD AL,0 MOV BUFF2SI,AL INC SI ADD AH,0 MOV BUFF2SI,AH INC SI POP BX RET BCDASC1 ENDP CODE ENDS END START本科生课程设计成绩评定表姓 名黎 健性 别男专业、班级电气0804班课程设计题目:计算机时钟模拟显示软件设计课程设计答辩或质疑记录:成绩评定依据:评 分 项 目分值评分1选题合理、目的明确102设计方案正确,具有可行性、创新性253设计结果:仿真与实验验证254态度认真、学习刻苦、独立完成任务155设计报告规范化、参考文献充分、无原则性错误156答辩10总分100最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1