汇编语言课程设计数字时钟与计算机的时间同步显示.doc

上传人:精*** 文档编号:851635 上传时间:2023-09-16 格式:DOC 页数:8 大小:109.50KB
下载 相关 举报
汇编语言课程设计数字时钟与计算机的时间同步显示.doc_第1页
第1页 / 共8页
汇编语言课程设计数字时钟与计算机的时间同步显示.doc_第2页
第2页 / 共8页
汇编语言课程设计数字时钟与计算机的时间同步显示.doc_第3页
第3页 / 共8页
汇编语言课程设计数字时钟与计算机的时间同步显示.doc_第4页
第4页 / 共8页
汇编语言课程设计数字时钟与计算机的时间同步显示.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、一、 课程题目数字时钟,与计算机的时间同步显示。二、 设计思想程序原理:程序先调用系统时间,然后将返回的二进制数转化成ASCII码,再通过dos显示功能显示出来,并通过循环不断刷新显示的时间。在二进制转化成ASCII码的过程中,我进一步地了解到,在转化过程中,二进制数首先转化为双四位的BCD码,再将高四位低四位分别相加30H,从而转化为ASCII码,此时要对照书本的附录了解电脑cup如何将ASCII码的信息转换成显示字符。时间刷新:因为程序是不断对显示屏进行刷新的,所以调用了bctd程序,这是一个精确的计时程序,计数时间约为1秒,然后用了jmp display指令,刷新显示屏,从而达到时间的每

2、秒显示。屏幕显示:开始做完程序的时候由于采用了光标定位的方法,发现运行了程序后显示光标不停地在不同的位置上跳动,严重影响了程序的可看性。检查了解到光标的跳动跟程序的刷新频率还有人眼的视觉残象成影原理有关,只要系统的刷新频率大于1/25秒,那么人眼就会认为图象在改变,这跟电影为什么要设成25帧/秒的播放速率的原理是一样的。这样一来,就必须设计一较为精确的延时程序来改善画面的显示了,只要不让屏幕刷新得太快就可以打到要求,具体的显示时间是通过延时程序里的DX值决定的,通过调整DX的值,我们发现当DX等于04FF的时候显示效果是最好的。系统退出:开始本程序是使用了DOS中断的键盘功能调用,可是当加了比

3、较跳转指令后整个程序就停了在那里,最后换成了键盘I/O功能调用,问题得到解决。三、 程序流程图清屏调用DOS中断取系统时间2进制转ACSII码将转换好的系统时间存入时间显示缓冲区显示时间与界面ESC键按下?调用延时子程序返回DOS程序结束YN四、 源代码data segmentmess1 db Press ESC button to quit ,0ah,0dhdb ,0ah,0dhdb ,0ah,0dhdb ,0ah,0dhdb ELECTRONIC CLOCK ,0ah,0dhdb * ,0ah,0dhdb * ,0ah,0dhdb Hust Wenhua College ,0ah,0dhd

4、b design by XuChengting ,0ah,0dhdb ,0ah,0dhdb ,0ah,0dhdb ,$mess2 db 0dh,0ah,$t_buff db 20 ;在数据段开辟一时间显示缓冲区data endsstack segmentdb 100 dup(?)stack endscode segmentassume cs:code,ss:stack,ds:datamain:call clear ;调用清屏子程序display: mov ax, datamov ds,axmov bx,offset t_buff ;送t_buff的偏移地址到BXmov ah,2ch ;调用DO

5、S时间调用功能,功能号:2cH,小时,分钟,秒数分别保存在CH,CL,DH中int 21hmov al,ch ;小时数设定mov ah,0call bctd ;调用进制转换子程序push axand al,0f0h ;选取al高四位mov cl,4 ;设置右循环的次数rol al,cl ;右循环or al,30h ;加30h得到ACSII码mov bx,al ;将得到的结果送到t_buff缓冲区inc bx ;BX自加1,指针指向下一个缓冲区的下一个地址pop axand al,0fh ;选取低四位,道理同上or al,30hmov bx,al ;将转换后的低四位值送入缓冲区的第二个地址inc

6、 bxmov al,: ;显示分号mov bx,alinc bxmov ah,2chint 21hmov al,cl ;分钟数设定mov ah,0call bctdpush axand al,0f0hmov cl,4rol al,clor al,30hmov bx,alinc bxpop axand al,0fhor al,30hmov bx,alinc bxmov al,: ;显示;号mov bx,alinc bxmov ah,2ch ;秒设定int 21hmov al,dhmov ah,0call bctdpush axand al,0f0hmov cl,4rol al,clor al,3

7、0hmov bx,alinc bxpop axand al,0fhor al,30hmov bx,alinc bxmov al,$ ;将字符串的结束位送至显示缓冲区的最后一位mov bx,alpush bx ;置光标位置 ,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BXmov ah,2mov bh,0mov dh,11mov dl,33int 10hpop bxlea dx,t_buff ;送t_buff偏移地址到DX,并调用DOS显示功能,功能号为9mov ah,9int 21hpush bx ;置光标位置mov ah,2mov bh,0mov dh,0mov dl,0int

8、 10hpop bxlea dx,mess1mov ah,9int 21hpush bx ;置光标位置mov ah,2mov bh,0mov dh,17mov dl,21int 10hpop bxlea dx,mess2mov ah,9int 21hcall delay1mov ah,1 ;按任意键结束,调用键盘I/O中断功能号1,获取键值到ALint 16hcmp al,1bhjz quit ;是ESC键的话就跳转jmp displayquit:mov ah,4chint 21hretbctd proc near;二进制转BCD码子程序;AX输入参数;AX输出参数,存放调整过的BCD码;mo

9、v dx,axmov ax,0mov cx,16 ;设循环次数bctd1:clc ;清进位标志Crcl dx,1 ;通过进位的循环右移adc al,al ;带进位加法daa ;加法的十进制调整xchg al,ah ;交换高,低八位adc al,aldaaxchg al,ahloop bctd1 ;循环,次数保存在CX里retbctd endpclear proc nearpush ax ;入栈保护现场push bxpush cxpush dxmov ax,0600h;ah=06(滚动)al=00(全屏空白)mov bh,8Bh ;背景颜色(8),绿色前景(B)sub cx,cxmov dx,5

10、f5fhint 10hpop dx ;出栈恢复现场pop cxpop bxpop axretclear endpdelay1 PROC ;精确延迟时间子程序MOV DX,04ffh ;循环次数up: XOR CX,CXa: NOPLOOP aDEC DXJNZ upRETdelay1 ENDPcode endsend main五、 调试过程及调试结果在刚调试好时,我觉得界面的颜色过于单调,所以我通过下面的代码修改了背景颜色和字体颜色。clear proc nearpush ax push bxpush cxpush dxmov ax,0600hmov bh,8Bh sub cx,cxmov dx,5f5fhint 10hpop dx pop cxpop bxpop axretclear endp六、 总结经过了两周的课程设计,让我对汇编语言这门课有了更深的认识,原本以为这门课所学的语言一无是处,可是没先到同样也能做出漂亮的程序。在刚把代码输完的时候,程序有十多个错误。在不断的调试和修改之后,程序能够正常运行,能输出与计算机同步的时间。通过这次课程设计,使我认识到理论与实际相结合的重要性,对课本上的只是在实际生活中的运用也有了进一步的了解,同时基本上能够掌握汇编语言编程中编程的步骤,可以说是从中受益匪浅。

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 课程设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922