汇编语言课程设计--时钟的显示与隐藏

上传人:kms****20 文档编号:40543835 上传时间:2018-05-26 格式:DOC 页数:9 大小:31.50KB
返回 下载 相关 举报
汇编语言课程设计--时钟的显示与隐藏_第1页
第1页 / 共9页
汇编语言课程设计--时钟的显示与隐藏_第2页
第2页 / 共9页
汇编语言课程设计--时钟的显示与隐藏_第3页
第3页 / 共9页
汇编语言课程设计--时钟的显示与隐藏_第4页
第4页 / 共9页
汇编语言课程设计--时钟的显示与隐藏_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《汇编语言课程设计--时钟的显示与隐藏》由会员分享,可在线阅读,更多相关《汇编语言课程设计--时钟的显示与隐藏(9页珍藏版)》请在金锄头文库上搜索。

1、汇编语言课程设计汇编语言课程设计-时钟的显示与隐藏时钟的显示与隐藏clear_screen macro op1,op2,op3,op4 ;宏定义,设置七个参数mov ah,06h ;ah=06 屏幕初始化或上卷指定的行mov al,00h ;清屏mov bh,79h ;卷入行属性mov ch,op1 ;左上角行号mov cl,op2 ;左上角列号mov dh,op3 ;右上角行号mov dl,op4 ;右上角列号int 10h ;调用 bios 功能mov ah,02h ;制定光标位置mov bh,00h ;第 0 页mov dh,00h ;第 0 行mov dl,00h ;第 0 列int

2、10hendmshow macro b ;show 命令宏定义lea dx,b mov ah,9 int 21h endm stack segment ;定义堆栈段db 200 dup(0)stack endsdata segment ;定义数据段welcome db welcome you to here!,$ENTER db 0dh,0ah,$SPACE1 db ,$RIQIIS db DATA IS: ,$TIMEIS db TIME IS: ,$TISHIXIANSHI db 27 dup( ),/-,0ah,0dhdb 27 dup( ),| The time is displaie

3、d |,0ah,0dhdb 27 dup( ),| press w to yincang |,0ah,0dhdb 27 dup( ),| press anykey to exit |,0ah,0dhdb 27 dup( ),-/,0ah,0dh,$TISHIYINCANG db 27 dup( ),/-,0ah,0dhdb 27 dup( ),| It is already hidened |,0ah,0dhdb 27 dup( ),|press q again to display|,0ah,0dhdb 27 dup( ),| press anykey to exit |,0ah,0dhdb

4、 27 dup( ),-/,0ah,0dh,$ datedis db 0000 - 00 - 00 ,0ah,$ ;日期格式(更换时间格式可更改 97 行字符串偏移地址)timedis db 00 ,:, 00 ,:, 00 ,0ah,$ ;时间格式space db 22 dup( ),$data endscode segment ;定义代码段assume cs:code,ds:data,ss:stackstart:;-主程序段-main proc farmov ah,00h ;Int 10,BIOS 调用,ah=0 时设置显示模式mov al,03h ;设置 80*25 彩色图形显示int

5、10hclear_screen 00h,00h,19h,50h ;调用宏定义,初始化屏幕mov ax,datamov ds,axmov ax,stackmov ss,ax;程序开始默认显示时间,调用 displaycall calendercall display;之后回归调用 S1 来判定键盘按键S1:cmp al,71h ;与 q 比较jne L1 mov ah,0chint 21h;键盘缓冲区清零,防止死循环call calendercall display L1:cmp al,77h ;与 w 比较jne L2mov ah,0chint 21hcall calendercall nod

6、isplay L2:main endp;-日期时间计算子程序段,将系统时间转换成可以显示的 ASCII 码并送入字符串-calender proc near ;开始计算日期mov ah,2 int 10hmov ah,2ah ;取当前系统日期int 21hmov ax,cx ;送年份入 ax 作为被除数(年份存在 cx 中,DH:DL 存储日月)mov bx,10 ;(bx=10)lea si,datedis+14 ;78 使 si 指向年的最后一位mov cx,4 ;(cx)=4 为年的位数,循环 4 次push dx ;dx 入栈,保存月日sub si,10tab:xor dx,dx ;d

7、x 清零div bx ;(dx,ax)/bx,商送 ax,余数送 dxadd dl,30h ;余数与 30h 相加变为字符的的 ASCII 码mov si,dl ;余数送入 si 所指向的字节区dec si ;si 减一loop tab ; 循环四次pop dx ;dx 还原,ASCII 码转换成功mov al,dl ;日送给 alxor ah,ah ;ah 清零div bl ;ax/bl,商送 al,余数送 ahadd ax,3030h ;转变为数字字符的 ASCII 码add si,13 ;使 si 指向日的第一位mov si,ax ;)ax)送 si 所指向的字节区mov al,dh ;

8、月送 alxor ah,ah ;ah 清零div bl ;ax/bl,商送 al,余数送 ahadd ax,3030h ;转变为数字字符的 ASCII 码sub si,5 ;使 si 指向月的第一位mov si,ax ;(ax)送 si 所指向的字节区;开始计算时间mov ah,2chint 21hmov bx,10lea di,timedismov al,ch ;ch 存时xor ah,ahdiv bladd ax,3030hmov di+1,axmov al,cl ;cl 存分xor ah,ahdiv bladd ax,3030hmov di+6,axmov al,dh ;dh 存秒xor

9、 ah,ahdiv bladd ax,3030hmov di+11,axretcalender endpdisplay proc near;开始显示日期和时间clear_screen 00h,00h,19h,50h;清屏的那个宏命令调用show ENTERshow ENTERshow ENTERshow ENTERshow ENTERshow ENTERshow SPACEshow RIQIISshow datedis;日期存储字符串 show ENTERSHOW SPACESHOW TIMEISshow timedis;介个是时间存储字符串show ENTERshow TISHIXIANSH

10、Imov ah,01int 16h ;int 16 中断 1 号功能判断键盘缓冲区是否为空,ZF=1 标志缓冲区为空JNZ S1DELAY PROC ;精确延迟时间子程序MOV DX,01FFH ; 循环次数,约延时 100msUP:XOR CX,CXA: NOPLOOP ADEC DXJNZ UPcall calendercall displayRETDELAY ENDPdisplay endpnodisplay proc nearclear_screen 00h,00h,19h,50h;必须清屏来覆盖之前 display 中已经存在于屏幕上的字符show ENTERshow ENTERsh

11、ow ENTERshow ENTERshow ENTERshow ENTER;显示同样数目的空行来完成隐藏事件功能show ENTERshow TISHIYINCANGmov ah,01int 16h ;int 16 中断 1 号功能判断键盘缓冲区是否为空JNZ S1DELAY1 PROC ;精确延迟时间子程序MOV DX,03FFH ; 循环次数UP1:XOR CX,CXA1:NOPLOOP A1DEC DXJNZ UP1;由于不需要显示时间,因此此处不需要再次调用 calender 子程序来计算时间CALL nodisplayRETDELAY1 ENDPnodisplay endpcode endsend start

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号