日期时间汇编语言设计.docx

上传人:b****2 文档编号:11411283 上传时间:2023-05-31 格式:DOCX 页数:13 大小:72.93KB
下载 相关 举报
日期时间汇编语言设计.docx_第1页
第1页 / 共13页
日期时间汇编语言设计.docx_第2页
第2页 / 共13页
日期时间汇编语言设计.docx_第3页
第3页 / 共13页
日期时间汇编语言设计.docx_第4页
第4页 / 共13页
日期时间汇编语言设计.docx_第5页
第5页 / 共13页
日期时间汇编语言设计.docx_第6页
第6页 / 共13页
日期时间汇编语言设计.docx_第7页
第7页 / 共13页
日期时间汇编语言设计.docx_第8页
第8页 / 共13页
日期时间汇编语言设计.docx_第9页
第9页 / 共13页
日期时间汇编语言设计.docx_第10页
第10页 / 共13页
日期时间汇编语言设计.docx_第11页
第11页 / 共13页
日期时间汇编语言设计.docx_第12页
第12页 / 共13页
日期时间汇编语言设计.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

日期时间汇编语言设计.docx

《日期时间汇编语言设计.docx》由会员分享,可在线阅读,更多相关《日期时间汇编语言设计.docx(13页珍藏版)》请在冰点文库上搜索。

日期时间汇编语言设计.docx

日期时间汇编语言设计

前言

在程序的实现过程中,先在数据段开一段显示缓冲区,用来存储系统时间,调用子程序的清屏部分。

通过调用DOS中断,得到系统当前时间,并将其二进制转换成ASCII码。

目前DOS常用的9类中断(20H-27H和2FH)分为两种:

DOS专用中断和DOS可调用中断。

(1)DOS专用中断。

DOS专用中断是指INT22H、INT23H和INT24H三个中断,属于DOS操作时专用,用户不要直接使用。

INT27H和INT2FH六个中断。

这六个中断都直接供用户直接调用,但都必须要满足一定的入口条件。

(2)由于中DOS可调用中断。

DOS可调用中断是指INT20H、INT21H、INT25H、INT26H、断有很多中,本身就比较复杂,所以在这里只是简单的提一下,不做深入研究。

只对其中的INT10和INT21两种特别常见且应用广泛的在程序设计过程中结合程序加以说明。

中文摘要

本程序设计依托最基本的计算机语言---汇编语言。

通过汇编程序调用系统时间或日期。

首先调用DOS中断,得到系统当前时间或日期,并将其二进制转换成ASCII码,再调用DOS字符串显示功能将时间或日期以电子时钟的方式显示在显示器上。

意义在于能更好更快使时间、日期的程序得以实现。

使得时间、日期的显示程序更加精炼,更加准确。

关键字:

更好更快精炼准确

 

目录

1.系统总体设计1

2.详细设计2

2.1功能模块的分析2

2.2寄存器的移动方法2

2.3PUSH和POP的调用2

2.4S系统的调用2

3.系统测试4

4.程序清单5

设计总结11

参考文献12

致谢13

1.系统总体设计

(1)用汇编语言编写程序,使其能实现在PC机上用电子时钟时、分、秒的格式显示时间、日期的功能。

(2)调用DOS中断,得到系统当前时间、日期,并将其二进制转换成ASCII码。

(3)把程序设计成用刷新的方式来不断获取系统的时间、日期。

(4)获取键盘的按键值,以ESC键

 

图1-1系统功能模块图

 

2.详细设计

2.1功能模块的分析

由于获取了的系统时间或日期不会自动刷新,所以要设计成刷新的方式来不断获取系统的时间或日期,这样就形成了会跳动的电子钟或日期了。

时间显示的刷新要配合延时程序进行,为了得到良好的显示效果,延时程序要尽量接近1秒,但又不能超过一秒,所以本程序调用了一段较精确的时间延迟程序,使得时间的显示程序更加精炼,使时间显示更加准确。

2.2寄存器的移动方法

在本次试验中需要注意基址寄存器BX的移动方法,对以字为单位的数组,BX的移动方式,是每移动一次加2或者减2。

2.3PUSH和POP的调用

函数调用的过程中需要小心PUSH和pop的调用是否安全,所以在调用函数时先得要进栈,然后才能出栈。

2.4S系统的调用

首先调用DOS中断,得到系统当前时间或日期,并将其二进制转换成ASCII码,再调用DOS字符串显示功能将时间或日期以电子时钟的方式显示在显示器上。

图2-1控制模块流程图

3.系统测试

(1)本程序可在windows98,windows2000,windowsxp上运行。

(2)打开DOS,进行运行,用鼠标点击工程lanxuan.EXE即可在masm615环境下运行该系统。

(3)在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母“Q”,可结束程序。

程序运行截图:

图3-1日期

图3-2日期

4.程序清单

在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母“Q”,可结束程序。

STACKSEGMENTSTACK

DW200DUP(?

STACKENDS

DATASEGMENT

SPACEDB1000DUP('')

PATTERNDB6DUP(''),0C9H,26DUP(0CDH),0BBH,6DUP('')

DB6DUP(''),0BAH,26DUP(20H),0BAH,6DUP('')

DB6DUP(''),0C8H,26DUP(0CDH),0BCH,6DUP('')

DBUFFERDB8DUP(':

'),12DUP('')

DBUFFER1DB20DUP('')

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,0B00H

MOVCX,0000

MOVBX,0040H

MOVAX,1300H

INT10H

MOVBP,OFFSETPATTERN;显示矩形条

MOVDX,0B00H

MOVCX,120

MOVBX,004EH

MOVAX,1301H

INT10H

LEADX,STR;显示提示信息

MOVAH,9

INT21H

MOVAH,1;从键盘输入单个字符

INT21H

CMPAL,44H;AL='D'?

JNEA

CALLDATE;显示系统日期

A:

CMPAL,54H;AL='T'?

JNEB

CALLTIME;显示系统时间

B:

CMPAL,51H;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,OFFSETDBUFFER1

MOVDX,0C0DH

MOVCX,20

MOVBX,004EH

MOVAX,1301H

INT10H

MOVAH,02H;设置光标位置

MOVDX,0300H

MOVBH,0

INT10H

MOVBX,0018H

REPEA:

MOVCX,0FFFFH;延时

REPEA1:

LOOPREPEA1

DECBX

JNZREPEA

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,OFFSETDBUFFER

MOVDX,0C0DH

MOVCX,20

MOVBX,004EH

MOVAX,1301H

INT10H

MOVAH,02H

MOVDX,0300H

MOVBH,0

INT10H

MOVBX,0018H

RE:

MOVCX,0FFFFH

REA:

LOOPREA

DECBX

JNZRE

MOVAH,01H

INT16H

JEDISPLAY1

JMPSTART

MOVAX,4C00H

INT21H

RET

TIMEENDP

BCDASCPROCNEAR;时间数值转换成ASCII码字符子程序

PUSHBX

CBW

MOVBL,10

DIVBL

ADDAL,'0'

MOVDBUFFER[SI],AL

INCSI

ADDAH,'0'

MOVDBUFFER[SI],AH

INCSI

POPBX

RET

BCDASCENDP

BCDASC1PROCNEAR;日期数值转换成ASCII码字符子程序

PUSHBX

CBW

MOVBL,10

DIVBL

ADDAL,'0'

MOVDBUFFER1[SI],AL

INCSI

ADDAH,'0'

MOVDBUFFER1[SI],AH

INCSI

POPBX

RET

BCDASC1ENDP

CODEENDS

ENDSTART

 

设计总结

本次课程设计的内容是结合汇编语言的特点编写的程序。

程序设计成用刷新的方式来不断获取系统的时间或日期,这样就有了会一秒一秒走动的电子时钟。

由于获取了的系统时间或日期不会自动刷新,所以要设计成刷新的方式来不断获取系统的时间或日期,这样就形成了会跳动的电子钟或日期了。

为了使时间或日期显示更加准确,本程序还设计了一段较精确的时间延迟程序。

时间在运行中出现了不准确性,对程序的循环次调整后,时间能正常运行。

在设计和调试过程中的困惑和解决办法:

(1)BIOS功能调用INT10H:

在BIOS功能调用INT10H中,AH=02H(置光标位置)和AH=06H(当前显示页上滚),功能号AH=02H很好的解决了这个问题。

DH=光标所在行,DL=光标所在列,BH=光标所在页,三个入口参数控制了光标的位置。

(2)DOS功能调用:

(3)宏定义和过程调用:

使用宏定义和过程调用会使繁杂的程序容易读懂和解,也使写程序的思路清晰

 

参考文献

[1]彭虎等编著.微机原理与接口技术(第二版).北京:

电子工业出版社,2008

[2]沈美明,温东禅.IBM-PC汇编语句程序设计(第2版).北京:

清华大学出版社,2001

[3]任向明,卢惠林.汇编语言程序设计实用教程.北京:

清华大学出版社,2009

[4]马力妮.80x86汇编语言程序设计.北京:

机械工业出版社,2004

[5]艾德才.Pentium系列微型计算机原理与接口技术.北京:

高等教育出版社,2000

 

致谢

在这次课程设计的撰写过程中,我得到了许多人的帮助。

首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,尤其是要感谢辅导老师刘树群老师给我的帮助。

这是我能顺利完成这次报告的主要原因,老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。

在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。

其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计上的难题。

当然,在这次课程设计中,我也在网站上找了许多参考资料,也在图书馆借阅了一些参考书籍。

所以我也要谢谢提供这些资料和参考资料的作者们。

最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。

 

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2