《电子时钟》微机原理课程设计.doc_第1页
《电子时钟》微机原理课程设计.doc_第2页
《电子时钟》微机原理课程设计.doc_第3页
《电子时钟》微机原理课程设计.doc_第4页
《电子时钟》微机原理课程设计.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要汇编语言是面向机器的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这样用符号代替机器语言的二进制代码,就把机器语言变成了汇编语言。汇编语言能够最大限度的发挥硬件的性能。本次课程设计的内容是使用汇编语言设计一个可运行于计算机的时钟模拟显示程序。要求在屏幕中央显示当前时间,格式为时:分:秒且12/24时制可调。关键词:计算机 汇编语言 电子时钟AbstractAssembly language is a programming language for the machine. In assembly language, the use of mnemonics instead of operation code, instead of the address code with the address sign or label. This use of symbols instead of binary machine language code, put the assembly language into machine language. Assembly language can maximize the performance of hardware.The content of this course design is the use of assembly language to design a simulation display program can be run on a computer clock. Requirements: the current time is displayed in the center of the screen, the format is hours: minutes: seconds and the system is adjustable for 12/24.III目录第一章 绪论 11.1 电子时钟的背景1 1.2 电子时钟的应用1第二章 总体设计2 2.1 设计内容2 2.2 设计原理2 2.3 程序流程图3第三章 详细设计4 3.1 时制选择模块4 3.2 设置时间模块4 3.3 延时模块5 3.4 时间显示模块6第四章 调试过程及结果 84.1 调试过程8 4.2 运行结果8总结10致谢11附录12第一章 绪论1.1电子时钟的背景 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间,忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。电子时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。1.2电子时钟的应用电子钟是一种用数字电路技术实现时、分、秒计时的装置,通常具有可选的12小时或24小时的计时方式,能快速校准时、分、秒。与机械时钟相比,电子钟更具有直观性,且因非机械驱动,具有更长的使用寿命,相较石英钟的石英机芯驱动,更具准确性。电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。第二章 总体设计2.1 设计内容使用汇编语言设计一个可运行于计算机的时钟模拟显示程序。程序运行成功后,界面中首先显示“12/24:”提示选择12或24时制,输入以后会出现“please enter the time:”提示输入初始时间,其格式为:时(xx):分(xx):秒(xx)。然后界面就出现所设的初值并开始计时,其输出格式为xx:xx:xx。2.2 设计原理(1)12/24时制的设置调用DOS操作系统模块1,输入12/24时制的第一位即高位,再调用DOS操作系统模块1输入12/24时制的第二位即低位。然后将输入的两个ASCII码值转换为压缩BCD码存入定义的变量S中,用于与12H比较并跳转到相应进制显示的程序中。(2)时钟起始时间的设置先调用设置光标子程序和清除屏幕子程序,调用DOS操作系统模块9,在显示屏上显示提示符“please enter the time:”,再调用DOS操作系统模块10,提示要输入时钟的起始时间,输入时间的格式是“时(xx):分(xx):秒(xx)”。(3)延时程序调用TIME延时1s子程序,累加到存放秒值的寄存器DL中,并进行十进制调整。在累加的过程中,不断地对时、分、秒进行比较调整。(4)时间显示 调用DOS操作系统模块9,可用来显示存储器内字符串。由于显示的字符串必须为ASCII编码,因此要编写一个子程序将压缩BCD码字符串转换成ASCII码字符串,字符串最后以字符“$”结束,并按时、分、秒的顺序送存储器缓冲区内。调用DOS操作系统模块9时,(DS:DX)应指向字符串首址。程序一旦进入运行,就将不间断地在显示屏显示时间,要想使程序停止运行,可同时在键盘按下Ctrl和Break二键。2.3 程序流程图开始显示提示语键盘输入时制显示提示语键盘输入初始时间时间数据转换为BCD数BCD数转换为压缩BCD数时CH,分DH,秒DL延时1秒12进制显示24进制显示字符显示报时S=12H?NY第三章 详细设计3.1 时制选择模块要想实现此功能需使用分支结构程序,从1号中断输入时制,然后将输入的两个ASCII码值转换为压缩BCD码存入定义的变量S中,用于与12H比较,跳转到相应进制显示的程序中。其程序片段如下:MOV AH,1 ;DOS功能模块,从键盘输入字符INT 21HMOV BL,AL ;将输入的12或24转换为压缩BCD码存放在变量S中AND BL,0FHSHL BL,1SHL BL,1SHL BL,1SHL BL,1MOV AH,1INT 21HMOV CL,ALAND CL,0FHOR CL,BLMOV S,CLMOV AH,1 ;输入最后一个回车字符INT 21HCMP S,12HJNZ JZ24 ;24进制则跳转到J24执行24进制显示的程序3.2设置时间模块先调用设置光标子程序和清除屏幕子程序,调用DOS操作系统模块9,在显示屏上显示提示语“please enter the time:”,再调用DOS操作系统模块10,提示要输入时钟的起始时间,输入时间的格式是“时(xx):分(xx):秒(xx)”。输入的时间以字符串形式放在已定义的存储器缓冲区,然后调用TBCD和MUL10子程序,将存放在存储器缓冲区的ASCII字符转换成压缩BCD码,并将时、分、秒的值放置在寄存器CH、DH、DL中。其程序片段如下:MOV DX,OFFSET CT ;DOS功能模块,显示字符串,提示从键盘输入MOV AH,9INT 21HMOV DX,OFFSET BUFFERMOV AH,10 ;DOS功能模块,从键盘输入字符串到缓冲区INT 21HMOV BX,OFFSET BUFFER+2CALL TBCD ;时转换为BCD数 INC BXINC BXCALL TBCD ;分转换为BCD数 INC BX INC BXCALL TBCD ;秒转换为BCD数MOV BX,OFFSET BUFFER+2 ;原输入缓冲区的BCD数转换压缩BCD数的同时将输入缓冲区的数据传给CH(时),DH(分),DL(秒)MOV AL,BX CALL MUL10 MOV CH,AL INC BXINC BX3.3 延时模块调用TIME延时1s子程序,累加到存放秒值的寄存器DL中,并进行十进制调整。在累加的过程中,不断地对时、分、秒进行比较,秒不能等于60,分不能等于60,时不能等于12或24。秒等于限值时,则使秒值为0并且分值加1;时等于限值时,先置零然后就转显示屏输出。其程序片段如下:TIME PROC PUSH CXPUSH AXMOV AX,25000 ;嵌套循环AX为外循环,CX为内循环 WAITED: MOV CX,24000 GOON: LOOP GOONDEC AXJNZ WAITEDPOP AXPOP CXRET TIME ENDP3.4时间显示模块调用DOS操作系统模块9,可用来显示存储器内字符串。由于显示的字符串必须为ASCII编码,因此要编写一个子程序TRAN将寄存器CH、DH、DL内压缩BCD码字符串转换成ASCII码字符串,字符串最后以字符“$”结束,并按时、分、秒的顺序送存储器缓冲区内。调用DOS操作系统模块9时,(DS:DX)应指向字符串首址。其程序片段如下:DISPLAY: MOV BX,OFFSET BUFFER INC BXINC BXCALL CLEARCALL SETMOV AL,CH ;将小时的压缩BCD数转化为ASCII码在存储器中进行修改CALL TRAN INC BXMOV AL,: ;在中间添加一个:MOV BX,ALINC BXMOV AL,DH CALL TRAN INC BXMOV AL,:MOV BX,ALINC BXMOV AL,DL CALL TRAN TRANPROC MOV CL,AL SHR AL,1SHR AL,1SHR AL,1SHR AL,1OR AL,30HMOV BX,ALINC BX MOV AL,CL AND AL,0FH OR AL,30H MOV BX,AL RET TRANENDP第四章 调试过程及结果4.1 调试过程(1)编写源程序,并命名为1.asm,并保存于asm文件夹中。(2)在DOS窗口下汇编源程序,使之生成目标文件,检查其中的错误并改正,直到编译无错误出现为止。(3)连接目标程序,产生可执行文件1.exe,运行1.exe。(4)屏幕上显示提示语“12/24:”,用户输入12或者24即可实现12或24进制的转换。(5)屏幕上显示“please enter the time:”,用户输入初始时间,输入格式为时(xx):分(xx):秒(xx)。(6)电子钟从用户设定的时间开始计时。4.2 运行结果(1)时制选择界面(2)设置初始时间界面 (3)时间显示界面总结编写各个模块所需代码并调试运行成功后,课程设计所要求的电子时钟显示软件便设计完成了,它能显示数字式的时钟,并且能设置时钟进制和初值。整个页面简洁清晰,方便用户读取,且操作简捷,符合课程设计中的各项要求。代码完成后我深切地感觉到,在写一个程序的时候,一定要先设计整个程序的流程图。因为汇编语言是一种低级语言,没有面向对象的概念,所以在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都必须有清楚的思路,而且画流程图在程序测试的过程中也有利于查错。在编写程序的时候,可以多利用左移或右移的操作,这样会节省寄存器的使用。另外,当寄存器不够用时,可以先把几个寄存器压栈,进行操作后再出栈,而且这样不会改变寄存器中的值。通过这次课程设计,我对日常生活中司空见惯的时钟的工作原理有了一个比较深入的了解,认识到了理论与实际相结合的重要性,对课本上的知识在实际生活中的运用也有了进一步的了解,同时基本上能够掌握利用汇编语言编程的步骤,可以说是受益匪浅。附录参考文献1 周佩玲,彭虎傅,傅忠谦. 微机原理与接口技术. 电子工业出版社.2011 2 杨记文. 汇编语言程序设计教程. 清华大学出版社.19983 王爽. 汇编语言(第2版).清华大学出版社.20084 丁辉. 汇编语言程序设计(第3版).电子工业出版社.20095 邵玉祥. 汇编语言程序设计. 科学出版社.20056 贾志平. 微机原理与接口技术. 中国水利水电出版社.19997 胡蔷. 微机原理及应用. 机械工业出版社.20068 朱金均,麻新旗. 微机原理及应用技术(第二版). 机械工业出版社.20059 沈美明,温冬婵. IBM-PC汇编语言程序设计.清华大学出版社.199310 钱

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论