微机原理课程设计.docx
《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
微机原理课程设计
课程设计任务书
学生姓名:
黎健专业班级:
电气0804
指导教师:
张锐工作单位:
自动化学院
题目:
计算机时钟模拟显示软件设计
初始条件:
1.用于调试程序的IBM兼容PC机一台;
2.安装DOS/WIN98操作系统或运行于DOS/WIN98兼容方式;
3.EDIT等文本编辑器输入80x86汇编程序,MASM5.0编译及链接程序。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.使用汇编语言设计一个运行于计算机的时钟模拟显示软件,软件应实现模拟显示时钟,要求至少有一种动态时钟显示效果如七段码管形状显示或旋转指针式指示效果等。
可以附加显示花边背景和日期信息。
2.说明书撰写格式应符合《课程设计说明书统一书写格式》。
时间安排:
1.程序框图设计,3天
2.编程,4天
3.调试,3天
4.编写设计报告,4天
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
汇编语言是面向机器的程序设计语言。
在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。
这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。
于是汇编语言亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。
高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。
在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。
现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。
汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
本文将介绍用汇编语言设计一个计算机时钟模拟显示软件。
目录
1基本功能描述4
2设计思路4
2.1设计任务及要求4
2.2程序流程图5
3软件设计6
3.1背景格局设计6
3.2文本方式设置6
3.3获取系统日期和时间7
3.4日期显示子程序7
3.5时间显示子程序9
4调试过程和运行结果及分析11
4.1调试过程11
4.2运行结果显示11
4.3结果分析13
5心得体会14
6参考文献15
7附录16
源程序16
本科生课程设计评定表22
计算机时钟模拟显示软件设计
1基本功能描述
需要设计的计算机时钟模拟显示程序是基于汇编语言的WINDOWS应用程序设计,程序运行成功后,页面出现数字式的时钟,数字钟的钟面为一个规则的矩形。
当从键盘上输入t时,其显示时间的格式是:
××时:
××分:
××秒,小时为24进制,分钟和秒都是60进制;当从键盘上输入d时,其显示时间的格式是:
××××年××月××日。
此模拟时钟外观简洁,功能和实际运用到的时钟基本一样,用起来非常方便。
2设计思路
2.1设计任务及要求
(1)使用汇编语言设计一个运行于计算机的时钟模拟显示软件,软件应实现模拟显示时钟,要求至少有一种动态时钟显示效果如七段码管形状显示或旋转指针式指示效果等。
可以附加显示花边背景和日期信息。
(2)说明书撰写格式应符合《课程设计说明书统一书写格式》。
2.2程序流程图
根据以上程序流程相应的说明,在程序编写前,我们应先画出程序流程图,这有助于我们理清思路,本程序的流程图如图1所示。
图1计算机时钟模拟程序流程图
3软件设计
3.1背景格局设计
如果数字式时钟不加一些背景加以修饰,就会显得单调,所以我们可以加花边或其它的一些东西加以修饰,使他看起来更加舒适和赏心悦目。
对背景格局的初始化程序段如下:
SPACEDB2000DUP('')
PATTERNDB6DUP(''),0C9H,26DUP(0CDH),0BBH,6DUP('')
DB6DUP('#'),0BAH,26DUP(20H),0BAH,6DUP('#')
DB6DUP(''),0C8H,26DUP(0CDH),0BCH,6DUP('')
BUFF1DB7DUP(':
'),24DUP('')
BUFF2DB21DUP('')
STRDB0DH,0AH,'Pleaseinputdate(d)ortime(t)orquit(q):
$'
3.2文本方式设置
文本显示方式原理如表1所示。
表1常用的几种显示方式
AH
调用参数AL
显示方式
00
00
40×25黑白文本方式
00
01
40×25彩色文本方式
00
02
80×25黑白文本方式
00
03
80×25彩色文本方式
00
04
320×200彩色文本方式
00
05
320×200黑白文本方式
00
06
640×200黑白文本方式
这里我们采用40×25黑白文本方式,所以设置显示方式的程序段如下:
MOVAX,0001H
INT10H
3.3获取系统日期和时间
系统日期的调用程序段:
MOVAH,2AH
INT21H
系统时间的调用程序段:
MOVAH,2CH
INT21H
3.4日期显示子程序
日期显示子程序模块设计功能为实时调用系统日期并将其显示。
系统日期调用应用2AH号系统功能,将年月日都以二进制存入各寄存器中,要想显示出来必须转换成ASCII码才行。
具体程序如下:
DATEPROCNEAR
DISPLAY:
MOVAH,2AH;取日期
INT21H
MOVSI,0
MOVAX,CX
MOVBX,100
DIVBL
MOVBL,AH
CALLBCDASC1;日期数值转换成相应的ASCII码字符
MOVAL,BL
CALLBCDASC1
INCSI
MOVAL,DH
CALLBCDASC1
INCSI
MOVAL,DL
CALLBCDASC1
MOVBP,OFFSETBUFF2
MOVDX,0C0DH
MOVCX,20
MOVBX,002EH
MOVAX,1301H
INT10H
MOVAH,02H;设置光标位置
MOVDX,0F2BH
MOVBH,0
INT10H
MOVBX,0018H
BB1:
MOVCX,0FFFFH;延时
BB2:
LOOPBB2
DECBX
JNZBB1
MOVAH,01H;读键盘缓冲区字符到AL寄存器
INT16H
JEDISPLAY
JMPSTART
MOVAX,4C00H
INT21H
RET
DATEENDP
3.5时间显示子程序
时间显示子程序模块设计与日期显示子程序类似,系统时间调用应用2CH号系统功能。
具体程序如下:
TIMEPROCNEAR
DISPLAY1:
MOVSI,0
MOVBX,100
DIVBL
MOVAH,2CH;取时间
INT21H
MOVAL,CH
CALLBCDASC;将时间数值转换成ASCII码字符
INCSI
MOVAL,CL
CALLBCDASC
INCSI
MOVAL,DH
CALLBCDASC
MOVBP,OFFSETBUFF1
MOVDX,0C0DH
MOVCX,20
MOVBX,002EH
MOVAX,1301H
INT10H
MOVAH,02H
MOVDX,0F2BH
MOVBH,0
INT10H
MOVBX,0018H
DD1:
MOVCX,0FFFFH
DD2:
LOOPDD2
DECBX
JNZDD1
MOVAH,01H
INT16H
JEDISPLAY1
JMPSTART
MOVAX,4C00H
INT21H
RET
TIMEENDP
4调试过程和运行结果及分析
4.1调试过程
(1)编写源文件,命名为shizhonglijian.asm,并保存于默认文件夹中。
(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时,退出显示,返回DOS系统。
综上所述,本次课程设计基本达到设计任务书要求。
5心得体会
经过以上步骤,课程设计所要求设计的计算机时钟模拟显示设计软件便成功完成了,它能显示数字式的时钟,并且与计算机系统时间保持一致。
整个页面简洁清晰,方便用户读取,且操作简捷,符合课程设计中的各项要求。
通过这次课程设计,我们对日常生活中司空见惯的时钟的工作原理有了一个比较深入的了解,将书本中的知识更好地与实际生活中的应用结合在了一起。
在这次微机原理的课程设计中,我们在汇编语言环境下,编写Windows应用程序。
汇编语言定义了一个标准的应用程序框架,为我们提供了大量可用代码,隐藏了程序设计中的许多复杂工作,在程序编写和调试过程中,掌握了程序调试方法,大大提高了编程能力和动手能力。
在程序的调试过程之中,可以说是困难重重,特别是对数字式时钟背景的绘制,,还要考虑数字式的时钟与计算机系统时间保持一致。
在不断的改正错误和调试的过程之中,所要求设计的计算机时钟模拟显示总算是运行成功。
到此为止,我们接近两周的课程设计也告一段落。
通过这次课程设计,使我认识到理论与实际相结合的重要性,对课本上的只是在实际生活中的运用也有了进一步的了解,同时基本上能够掌握汇编语言编程中的对话框编程的步骤,可以说是从中受益匪浅。
6参考文献
[1]周佩玲彭虎傅忠谦微机原理与接口技术.电子工业出版社.2007
[2]朱金均麻新旗微机原理及应用技术(第二版).机械工业出版社.2005
[3]王爽汇编语言.第2版.北京.清华大学出版社.2008
[4]沈美明温冬婵IBM-PC汇编语言程序设计.清华大学出版社.1993
[5]丁辉汇编语言程序设计.第3版.电子工业出版社.2009
7附录
源程序
STACKSEGMENTSTACK
DW200DUP(?
)
STACKENDS
DATASEGMENT
SPACEDB2000DUP('')
PATTERNDB6DUP(''),0C9H,26DUP(0CDH),0BBH,6DUP('')
DB6DUP('#'),0BAH,26DUP(20H),0BAH,6DUP('#')
DB6DUP(''),0C8H,26DUP(0CDH),0BCH,6DUP('')
BUFF1DB7DUP(':
'),24DUP('')
BUFF2DB21DUP('')
STRDB0DH,0AH,'Pleaseinputdate(d)ortime(t)orquit(q):
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAX,0001H;设置显示方式为40*25彩色文本方式
INT10H
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVBP,OFFSETSPACE
MOVDX,0D00H
MOVCX,2000
MOVBX,0021H
MOVAX,1301H
INT10H
MOVBP,OFFSETPATTERN;显示矩形条
MOVDX,0B00H
MOVCX,120
MOVBX,002EH
MOVAX,1301H
INT10H
LEADX,STR;显示提示信息
MOVAH,9
INT21H
MOVAH,1;从键盘输入单个字符
INT21H
CMPAL,64H;AL='d'?
JNEAA1
CALLDATE;显示系统日期
AA1:
CMPAL,74H;AL='t'?
JNEAA2
CALLTIME;显示系统时间
AA2:
CMPAL,71H;AL='q'?
JNESTART
MOVAH,4CH;返回dos状态
INT21H
DATEPROCNEAR;显示日期子程序
DISPLAY:
MOVAH,2AH;取日期
INT21H
MOVSI,0
MOVAX,CX
MOVBX,100
DIVBL
MOVBL,AH
CALLBCDASC1;日期数值转换成相应的ASCII码字符
MOVAL,BL
CALLBCDASC1
INCSI
MOVAL,DH
CALLBCDASC1
INCSI
MOVAL,DL
CALLBCDASC1
MOVBP,OFFSETBUFF2
MOVDX,0C0DH
MOVCX,20
MOVBX,002EH
MOVAX,1301H
INT10H
MOVAH,02H;设置光标位置
MOVDX,0F2BH
MOVBH,0
INT10H
MOVBX,0018H
BB1:
MOVCX,0FFFFH;延时
BB2:
LOOPBB2
DECBX
JNZBB1
MOVAH,01H;读键盘缓冲区字符到AL寄存器
INT16H
JEDISPLAY
JMPSTART
MOVAX,4C00H
INT21H
RET
DATEENDP
TIMEPROCNEAR;显示时间子程序
DISPLAY1:
MOVSI,0
MOVBX,100
DIVBL
MOVAH,2CH;取时间
INT21H
MOVAL,CH
CALLBCDASC;将时间数值转换成ASCII码字符
INCSI
MOVAL,CL
CALLBCDASC
INCSI
MOVAL,DH
CALLBCDASC
MOVBP,OFFSETBUFF1
MOVDX,0C0DH
MOVCX,20
MOVBX,002EH
MOVAX,1301H
INT10H
MOVAH,02H
MOVDX,0F2BH
MOVBH,0
INT10H
MOVBX,0018H
DD1:
MOVCX,0FFFFH
DD2:
LOOPDD2
DECBX
JNZDD1
MOVAH,01H
INT16H
JEDISPLAY1
JMPSTART
MOVAX,4C00H
INT21H
RET
TIMEENDP
BCDASCPROCNEAR;时间数值转换成ASCII码字符子程序
PUSHBX
CBW
MOVBL,10
DIVBL
ADDAL,'0'
MOVBUFF1[SI],AL
INCSI
ADDAH,'0'
MOVBUFF1[SI],AH
INCSI
POPBX
RET
BCDASCENDP
BCDASC1PROCNEAR;日期数值转换成ASCII码字符子程序
PUSHBX
CBW
MOVBL,10
DIVBL
ADDAL,'0'
MOVBUFF2[SI],AL
INCSI
ADDAH,'0'
MOVBUFF2[SI],AH
INCSI
POPBX
RET
BCDASC1ENDP
CODEENDS
ENDSTART
本科生课程设计成绩评定表
姓名
黎健
性别
男
专业、班级
电气0804班
课程设计题目:
计算机时钟模拟显示软件设计
课程设计答辩或质疑记录:
成绩评定依据:
评分项目
分值
评分
1.选题合理、目的明确
10
2.设计方案正确,具有可行性、创新性
25
3.设计结果:
仿真与实验验证
25
4.态度认真、学习刻苦、独立完成任务
15
5.设计报告规范化、参考文献充分、无原则性错误
15
6.答辩
10
总分
100
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日