汇编语言课程设计(论文)-电子时钟显示程序.doc_第1页
汇编语言课程设计(论文)-电子时钟显示程序.doc_第2页
汇编语言课程设计(论文)-电子时钟显示程序.doc_第3页
汇编语言课程设计(论文)-电子时钟显示程序.doc_第4页
汇编语言课程设计(论文)-电子时钟显示程序.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

攀枝花学院 学生课程设计(论文)题 目: 电子时钟显示程序 学生姓名: 学 号: 所在院(系): 计算机学院 专 业: 软件工程 班 级: 1班 指 导 教 师: 2010年12月24日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目电子时钟时间显示程序1、课程设计的目的1、培养学生理论联系实际的设计思想,提高学生综合运用汇编语言课程的理论知分析问题、解决问题的能力。2、通过查找、运用设计资料,完成工程设计所必备的基本训练。3、使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)时钟时间按计算机时间显示,并且时间精确到秒。按小时:分钟:秒显示。3、主要参考文献1汇编语言程序设计,吴向军等,高等教育出版社,20022ibm-pc汇编语言及程序设计(第2版), 沈美明等,清华大学出版社,20013ibm-pc汇编语言及程序设计实验教程,沈美明等,清华大学出版社 ,20014汇编语言程序设计, 钱晓捷等,电子工业出版社,20005汇编语言程序设计, 张志明等,重庆大学出版社,19974、课程设计工作进度计划1、分析设计准备,周一完成2、编程调试阶段,周二至周三3、编写课程设计报告,周四4、考核,周五指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表题目名称 电子时钟显示程序评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规范化程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日摘 要 本程序用计算机最基本的语言-汇编语言,实现电子时钟系统。程序通过调用dos中断,得到系统当前时间,并将其二进制转换成ascii码,再调用dos字符串显示功能将时间显示在显示器上,通过调用屏幕的i/o中断,把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟。为了使时间更加精确,在此过程需要用到延时程序,所以把延时程序单独做成一个子程序,然后在需要的时候调用它,使得时间的显示程序更加精炼,使时间显示更加准确。同时,本程序还可实现对系统时间的更改。 关键词:计算机,汇编语言,电子时钟。目录1.背景分析及意义12.总体设计思想12.1设计的算法12.2程序设计原理:23.主要功能24.程序流程图35.软硬件环境要求46.源代码47.调试过程:128.运行结果12设计总结14参考文献15 1.背景分析及意义 本程序设计依托最基本的计算机语言-汇编语言。通过汇编程序调用系统时间。首先调用dos中断,得到系统当前时间,并将其二进制转换成ascii码,再调用dos字符串显示功能将时间以电子时钟的方式显示在显示器上。由于获取了的系统时间不会自动刷新,所以要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,使得时间的显示程序更加精炼,使时间显示更加准确。程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可在键盘按下esc键返回dos系统。2.总体设计思想2.1设计的算法在程序的实现过程中,先在数据段开一段显示缓冲区,用来存储系统时间,调用子程序的清屏部分。通过调用dos中断,得到系统当前时间,并将其二进制转换成ascii码。再分别将小时数、分钟数、秒数存入显示缓冲区,在修改时间的时候调用键盘输入输出程序实现时钟的修改功能,然后存入结束字符$。调用dos字符串显示功能将时间显示在显示器上,调用屏幕的i/o中断,定位光标的开始位置,将时间显示在预先定义好的位置。把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟。为了使时间更加精确,在此过程需要用到延时程序,所以把延时程序单独做成一个子程序,然后在需要的时候调用它,使得时间的显示程序更加精炼,使时间显示更加准确。2.2程序设计原理:首先在数据段开辟一显示缓冲区,用来存储系统时间。调用dos中断,返回系统时间,并将来返回的二进制时间转换成ascii码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号$。调用dos字符串显示功能将时间显示出来。并调用屏幕i/o中断,定位光标的开始位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。调用延时time延时中断服务程序,累加到存放秒值的寄存器dl中,并进行十进制调整。在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转显示屏输出。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序。 利用bioss设计窗口,选择适当的背景和前景等,使屏幕显示更加完美。程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可同时在键盘按下esc键返回dos系统。3.主要功能 设计一个电子时钟系统,包括功能如下:1. 用汇编语言编写程序,使其能实现在pc机上用电子时钟时、分、秒的格式显示时间的功能。2调用dos中断,得到系统当前时间,并将其二进制转换成ascii码。3. 能用键盘输入的方法修改电子时钟的时间。4把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟。5. 获取键盘的按键值,以esc键退出系统返回dos。 4.程序流程图取系统时间并转二进制为acsii码将时间存入显示缓冲区显示时间和界面调用延时子程序调用清屏子程序 t键按下?否是是否调用时间修改程序开 始返回dos程序结束读键盘输入值esc键按下?电子时钟程序流程图5.软硬件环境要求1软件:masm615编辑软件 ,window 或dos操作系统,editplus或其他编辑程序。2硬件:windowsxp及以上机型。6.源代码程序源代码:data segmentmess1 db *asm assignment* ,0ah,0dh db ,0ah,0dh db *electronic clock* ,0ah,0dh db ,0ah,0dh db *designed by guo tanchao* ,0ah,0dh db ,0ah,0dh db *press c or c to correct the time* ,0ah,0dh db ,0ah,0dh db *press esc button to exit* ,0ah,0dh,$tn db please input the new time (hh:mm:ss):,0dh,0ah,$ ;提示时间格式mess2 db *time is:,0ah,0dh,$t_buff db 40 ;在数据段开一段时间显示缓冲区db ?db 40 dup (?)hor db ?min db ?sec db ?fg db 0data endsstack segmentdb 100 dup(?)stack endscode segment assume cs:code,ss:stack,ds:data ;确定各个逻辑段的类型start: call clear ;调用清屏子程序display: ;时间显示部分 mov ax,seg data mov ds,ax mov bx,offset t_buff ;送t_buff的偏移地址到bx mov ah,2ch ;调用dos时间调用功能,功能号:2ch,小时,分钟,秒数;分别保存在ch,cl,dh中int 21h mov al,ch ;小时数设定 mov ah,0 call bctd ;调用进制转换子程序 push ax and al,0f0h ;选取al高四位 mov cl,4 ;设置右循环的次数 rol al,cl ;右循环 or al,30h ;加30h得到acsii码 mov bx,al ;将得到的结果送到t_buff缓冲区 inc bx ;指针指向下一个缓冲区的下一个地址 pop ax and al,0fh 选取低四位 or al,30h mov bx,al ;将转换后的低四位值送入缓冲区的第二个地址 inc bx ;- mov al,: ;显示分隔符号 mov bx,al inc bx ;- mov ah,2ch int 21h mov al,cl ;分钟数设定 mov ah,0 call bctd push ax and al,0f0h mov cl,4 rol al,cl or al,30h mov bx,al inc bx pop ax and al,0fh or al,30h mov bx,al inc bx mov al,: ;显示分隔符号 mov bx,al inc bx mov ah,2ch ;秒设定 int 21h mov al,dh mov ah,0 call bctd push ax and al,0f0h mov cl,4 rol al,cl or al,30h mov bx,al inc bx pop ax and al,0fh or al,30h mov bx,al inc bx mov al,$ ;将字符串的结束位送至显示缓冲区的最后一位 mov bx,al push bx ;置光标位置 ,ah=2,bh=0,; dh跟dl分别为行号与列号,并入栈保护bx mov ah,2 mov bh,0 mov dh,17 mov dl,41 int 10h pop bx lea dx,t_buff ;送t_buff偏移地址到dx,调用dos显示功能,功能号9 mov ah,9 int 21h push bx ;置光标位置 mov ah,2 mov bh,0 mov dh,0 mov dl,0 int 10h pop bx lea dx,mess1 mov ah,9 int 21h push bx ;置光标位置 mov ah,2 mov bh,0 mov dh,17 mov dl,21 int 10h pop bx lea dx,mess2 mov ah,9 int 21h call delay1 mov ah,1 ;调用键盘i/o中断功能号1,获取键值到al int 16h cmp al,t ;是t键,转到时间修改程序 je cor cmp al,t ;是t键,转到时间修改程序 je cor cmp al,1bh jz quit ;是esc键,退出程序 jmp displayquit: mov ah,4ch ;程序终止功能号 int 21h retcor: call correct ;调用时间修改子程序;-bctd proc near ;二进制转bcd码子程序 mov dx,ax mov ax,0 mov cx,16 ;设循环次数bctd1: clc ;清进位标志c rcl dx,1 ;通过进位的循环右移 adc al,al ;带进位加法 daa ;加法的十进制调整 xchg al,ah ;交换高、低八位 adc al,al daa xchg al,ah loop bctd1 ;循环次数保存在cx里 retbctd endp;-clear proc near push ax ;入栈保护现场 push bx push cx push dx mov ax,0600h ;ah=06(滚动)al=00(全屏空白) mov bh,2eh ;设置背景颜色(2)和前景颜色(e) sub cx,cx mov dx,5f5fh int 10h pop dx ;出栈恢复现场 pop cx pop bx pop ax retclear endp;-delay1 proc ;精确延迟时间子程序mov dx,04ffh ;循环次数up:xor cx,cxa:noploop adec dxjnz upretdelay1 endp;- correct proc ;时间修改子程序 call input ;调用键盘输入子程序输入数据 mov ch,hor mov cl,min mov dh,sec and dl,0h mov ah,2dh int 21h jmp start ret correct endp input proc ;键盘输入子程序 push ax ;入栈保护数据 push bx push cx push dx pushfmov dx,offset tn ;显示修改时间的格式提示mov ah,09hint 21hmov dx,offset t_buff ;数据缓冲区的数据输入mov ah,0ahint 21hand dx,0hlea bx,t_buffinc bxinc bxmov dh,bxsub dh,30hinc bxmov dl,bxsub dl,30hmov cl,10mov al,dhmul cladd al,dlmov ch,almov hor,alinc bxinc bxmov dh,bxsub dh,30hinc bxmov dl,bxsub dl,30hmov cl,10mov al,dhmul cladd al,dlmov cl,almov min,alinc bxinc bxmov dh,bxsub dh,30hinc bxmov dl,bxsub dl,30hmov cl,10mov al,dhmul cladd al,dlmov dh,almov sec,alpopf ;出栈恢复数据pop dx pop cxpop bxpop axretinput endp;-code ends end start7调试过程:1)编译源文件,命名为cmd.asm2)采用命令格式。masm cmd.asm将生成一个obj文件,检查源程序中的错误,并改正。3)键入连接命令:cmd.obj,再次键入hulilngwei回车,即可显示结果。4)时间在运行中出现了不准确性,对程序的循环次调整后,时间能正常运行。8.运行结果1本程序可在windows 98,windows 2000,windows xp上运行。2使用方法:直接双击“cmd.exe”图标即可运行。 进入程序后,按照提示信息输入即可。程序运行截图:显示系统时间3.按t或t键修改时间,按屏幕的提示格式

温馨提示

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

评论

0/150

提交评论