汇编语言课程设计(论文)电子时钟显示程序.doc

上传人:仙人指路1688 文档编号:2392966 上传时间:2023-02-17 格式:DOC 页数:20 大小:181KB
返回 下载 相关 举报
汇编语言课程设计(论文)电子时钟显示程序.doc_第1页
第1页 / 共20页
汇编语言课程设计(论文)电子时钟显示程序.doc_第2页
第2页 / 共20页
汇编语言课程设计(论文)电子时钟显示程序.doc_第3页
第3页 / 共20页
汇编语言课程设计(论文)电子时钟显示程序.doc_第4页
第4页 / 共20页
汇编语言课程设计(论文)电子时钟显示程序.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《汇编语言课程设计(论文)电子时钟显示程序.doc》由会员分享,可在线阅读,更多相关《汇编语言课程设计(论文)电子时钟显示程序.doc(20页珍藏版)》请在三一办公上搜索。

1、攀枝花学院 学生课程设计(论文)题 目: 电子时钟显示程序 学生姓名: 学 号: 所在院(系): 计算机学院 专 业: 软件工程 班 级: 1班 指 导 教 师: 2010年12月24日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目电子时钟时间显示程序1、课程设计的目的1、培养学生理论联系实际的设计思想,提高学生综合运用汇编语言课程的理论知分析问题、解决问题的能力。2、通过查找、运用设计资料,完成工程设计所必备的基本训练。3、使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)时钟时间按计算机

2、时间显示,并且时间精确到秒。按小时:分钟:秒显示。3、主要参考文献1汇编语言程序设计,吴向军等,高等教育出版社,20022IBM-PC汇编语言及程序设计(第2版), 沈美明等,清华大学出版社,20013IBM-PC汇编语言及程序设计实验教程,沈美明等,清华大学出版社 ,20014汇编语言程序设计, 钱晓捷等,电子工业出版社,20005汇编语言程序设计, 张志明等,重庆大学出版社,19974、课程设计工作进度计划1、分析设计准备,周一完成2、编程调试阶段,周二至周三3、编写课程设计报告,周四4、考核,周五指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月

3、日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表题目名称 电子时钟显示程序评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能

4、力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规范化程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新

5、10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日摘 要 本程序用计算机最基本的语言-汇编语言,实现电子时钟系统。程序通过调用DOS中断,得到系统当前时间,并将其二进制转换成ASCII码,再调用DOS字符串显示功能将时间显示在显示器上,通过调用屏幕的I/O中断,把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟。为了使时间更加精确,在此过程需要用到延时程序,所以把延时程序单独做成一个子程序,然后在需要的时候调用它,使得时间的显示程序更加精炼,使时间显示更加准确。同时,本程序还可实现对系统时间的更改。 关键词:计算机,汇编语言,电子时钟

6、。目录1.背景分析及意义12.总体设计思想12.1设计的算法12.2程序设计原理:23.主要功能24.程序流程图35.软硬件环境要求46.源代码47.调试过程:128.运行结果12设计总结14参考文献15 1.背景分析及意义 本程序设计依托最基本的计算机语言-汇编语言。通过汇编程序调用系统时间。首先调用DOS中断,得到系统当前时间,并将其二进制转换成ASCII码,再调用DOS字符串显示功能将时间以电子时钟的方式显示在显示器上。由于获取了的系统时间不会自动刷新,所以要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时

7、程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,使得时间的显示程序更加精炼,使时间显示更加准确。程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可在键盘按下ESC键返回DOS系统。2.总体设计思想2.1设计的算法在程序的实现过程中,先在数据段开一段显示缓冲区,用来存储系统时间,调用子程序的清屏部分。通过调用DOS中断,得到系统当前时间,并将其二进制转换成ASCII码。再分别将小时数、分钟数、秒数存入显示缓冲区,在修改时间的时候调用键盘输入输出程序实现时钟的修改功能,然后存入结束字符$。调用DOS字符串显示功能将时间显示在显示器上,调用屏幕的I/

8、O中断,定位光标的开始位置,将时间显示在预先定义好的位置。把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟。为了使时间更加精确,在此过程需要用到延时程序,所以把延时程序单独做成一个子程序,然后在需要的时候调用它,使得时间的显示程序更加精炼,使时间显示更加准确。2.2程序设计原理:首先在数据段开辟一显示缓冲区,用来存储系统时间。调用DOS中断,返回系统时间,并将来返回的二进制时间转换成ASCII码,方便时间显示时的调用。分别将来小时数、分钟数、秒数存入显示缓冲区,并最终存入一结束字符号$。调用DOS字符串显示功能将时间显示出来。并调用屏幕I/O中断,定位光标的开始

9、位置,结合着将时间显示在我们预先定义好的位置上。由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。调用延时TIME延时中断服务程序,累加到存放秒值的寄存器DL中,并进行十进制调整。在累加的过程中,不断地对时、分、秒值进行比较,秒不能等于60,分不能等于60,时不能等于24。秒等于限制值时,则使秒值为0分值加1;分等于限制值时,则使分值为0时值加1;时等于限制值时,则使时值为0;时、分、秒值都不超过限制值时,就转显示屏输出。时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调

10、用了一段较精确的时间延迟程序。 利用BIOSS设计窗口,选择适当的背景和前景等,使屏幕显示更加完美。程序一旦进入运行,就将不间断地在显示屏显示时间,要想程序停止运行,可同时在键盘按下ESC键返回DOS系统。3.主要功能 设计一个电子时钟系统,包括功能如下:1. 用汇编语言编写程序,使其能实现在PC机上用电子时钟时、分、秒的格式显示时间的功能。2调用DOS中断,得到系统当前时间,并将其二进制转换成ASCII码。3. 能用键盘输入的方法修改电子时钟的时间。4把程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟。5. 获取键盘的按键值,以ESC键退出系统返回DOS。 4.

11、程序流程图取系统时间并转二进制为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 *D

12、esigned 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

13、 ?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

14、 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

15、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

16、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,

17、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 displayq

18、uit: 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 pus

19、h 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 ;时间修改子程序 ca

20、ll 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 b

21、xinc 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,dl

22、mov 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

23、.exe”图标即可运行。 进入程序后,按照提示信息输入即可。程序运行截图:显示系统时间3.按t或T键修改时间,按屏幕的提示格式输入新的时间。 显示新时间设计总结本次课程设计的内容是结合汇编语言的特点编写的程序。程序设计成用刷新的方式来不断获取系统的时间,这样就有了会一秒一秒走动的电子时钟。由于获取了的系统时间不会自动刷新,所以要设计成刷新的方式来不断获取系统的时间,这样就形成了会跳动的电子钟了。为了使时间显示更加准确,本程序还设计了一段较精确的时间延迟程序。时间在运行中出现了不准确性,对程序的循环次调整后,时间能正常运行。在设计和调试过程中的困惑和解决办法:(1)BIOS功能调用INT 10H

24、:在BIOS功能调用INT 10H中,AH=02H(置光标位置)和AH=06H(当前显示页上滚),功能号AH=02H很好的解决了这个问题。DH=光标所在行,DL=光标所在列,BH=光标所在页,三个入口参数控制了光标的位置。(2) DOS功能调用: 文件知识是以前没有接触过的,怎样调用文件中的内容和向文件中添加内,关闭文件都要查阅资料。(3) 宏定义和过程调用:使用宏定义和过程调用会使繁杂的程序容易读懂和理解,也使写程序的思路清晰。参考文献 1汇编语言程序设计 沈美明 清华大学出版社 2宏汇编语言程序设计教程 第二版 王正智 电子工业出版社3汇编语言程序设计教程 杨季文 清华大学出版社48086/8088和ARM核汇编程序设计 李敬兆著 中国科学技术大学出版社5宏汇编语言MASM6实用大全东阳生等编著,科学出版社680386/80486编程指南田学峰,周豫滨译电子工业出版社7新编深入dos编程求伯君主编,学院出版社 8汇编语言程序设计学习指导 宋彩莉著,西安交通大学出版社9CASL汇编语言程序设计王世业编著,清华大学出版社10Intel汇编语言程序设计 温玉杰 梅广宇等译 电子工业出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号