为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

汇编显示时间日期源码

2018-08-29 7页 doc 20KB 16阅读

用户头像

is_511210

暂无简介

举报
汇编显示时间日期源码汇编显示时间日期源码 CLEAR_SCREEN MACRO OP1,OP2,OP3,OP4 MOV AH,06H MOV AL,00H MOV BH,79H MOV CH,OP1 MOV CH,OP2 MOV CH,OP3 MOV CH,OP4 int 10H MOV AH,02H MOV BH,00H MOV DH1,00H MOV DL,00H int 10H ENDM STACK SEGMENT STACK ;定义堆栈段 DB 200 DUP (0) STACK ENDS DATA ...
汇编显示时间日期源码
汇编显示时间日期源码 CLEAR_SCREEN MACRO OP1,OP2,OP3,OP4 MOV AH,06H MOV AL,00H MOV BH,79H MOV CH,OP1 MOV CH,OP2 MOV CH,OP3 MOV CH,OP4 int 10H MOV AH,02H MOV BH,00H MOV DH1,00H MOV DL,00H int 10H ENDM STACK SEGMENT STACK ;定义堆栈段 DB 200 DUP (0) STACK ENDS DATA SEGMENT ;定义数据段 WELCOME DB'WELCOME YOU TO COME HERE!$' ;提示界面 INF01 DB 0DH,0AH,'THIS IS A DISPLAY PROGAME!$' INF02 DB 0DH,0AH,'PLEASE INPUT "D" "T" OR "Q" TO SHOW DATATIME OR EXIT!$' INF03 DB 0DH,0AH,'D:DISPLAY SYSTEM DATE:$' INF04 DB 0DH,0AH,'T:DISPLAY SYSTEM TIME:$' INF05 DB 0DH,0AH,'Q:QUIT.$' INF06 DB 0DH,0AH,'PLEASE INPUT THE CHAR:$' INPUTER DB 0DH,0AH,'PNPUT ERROR!$' DATEDIS DB '00-00-0000',0AH,'$' ;显示DATE TIMEDIS DB '00:00:00',0DH,0AH,0AH,'$' ;显示TIME DATA ENDS CODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATA,SS:STACK ;主程序 MAIN PROC FAR start: MOV AH,0 ;设置40*25图形显示 MOV AL,3 int 10H MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX ;显示宏定义 SHOW MACRO b LEA DX,b MOV AH,9 int 21H ENDM SHOW WELCOME ;显示数据段落的内容 SHOW INF01 SHOW INF02 SHOW INF03 SHOW INF04 SHOW INF05 SHOW INF06 INPUT: MOV AH,01 ;键盘输入回写 int 21H CMP AL,44H ;与D比较 JNE L1 ;不相等转到L1 CALL DATEDISPLAY ;相等调用DATADISPLAY JMP EXIT1 L1: CMP AL,54H ;与T比较 JNE L2 ;不相等转L2 CALL TIMEDISPLAY ;相等调用TIMEDISPLAY JMP EXIT1 L2: CMP AL,51H ;与Q比较 JE EXIT ;相等转到EXIT SHOW INPUTER ;显示输入错误 SHOW INF05 ;显示输入提示INF05 JMP INPUT EXIT1: SHOW INF05 ;显示输入提示INF05 JMP INPUT EXIT: MOV AH,4CH ;结束 int 21H MAIN ENDP ;日期显示子程序 DATEDISPLAY PROC NEAR LEA DX,INF03 ;将INF03的偏移地址放到DX中,使DX指向INF03 MOV AH,09H ;调用9号功能显示字符串 INT 21H MOV AH,04H ;调用bios(基本输入输出系统) 1A中段获取系统日期 INT 1AH ;CH,BCD码格式的世纪 ;CL,BCD码格式的年 ;DH,BCD码格式的月 ;DL,BCD码格式的日 ;CF,0时钟在走,否则,时钟停止 MOV AX,CX ;设置年并覆盖00/00/0000中的0000 MOV CX,4 ;需要循环4次,把年的4位中每一位 LEA SI,DATEDIS+6 ;取出,并覆盖掉DATEDIS中的后四位字符 LA1: PUSH CX MOV CL,4 ROL AX,CL MOV BL,AL AND BL,0FH OR BL,30H MOV [SI],BL INC SI POP CX LOOP LA1 MOV AX,DX ;设置月日并覆盖00-00-0000中的00-00 MOV CX,4 ;需要循环4次,把年的4位中每一位 LEA SI,DATEDIS ;取出,并覆盖掉DATEDIS中的第1.2.4.5位字符 LA2: PUSH CX MOV CL,4 ROL AX,CL MOV BL,AL AND BL,0FH OR BL,30H MOV [SI],BL INC SI POP CX CMP CX,3 JNZ P2 ;跳过00-00中的'-' INC SI P2: LOOP LA2 LEA DX,DATEDIS ;显示系统当前日期 MOV AH,09H INT 21H RET ;调用后返回 DATEDISPLAY ENDP ;时间显示子程序 TIMEDISPLAY PROC NEAR LEA DX,INF04 ;将INF04的偏移地址放到DX中,使DX指向INF04 MOV AH,09H ;调用9号功能显示字符串 INT 21H MOV AH,02H ;调用bios 1A中断的二号功能获取系统时间;时间计数器当前值 写入数据区 INT 1AH ;CH,BCD码格式的小时 ;CL,BCD码格式的分钟 ;DH,BCD码格式的秒 ;DL,00H标准时间,否则,夏令时 ;CF,0时钟在走,否则,时钟停止 MOV AX,CX ;设置小时,分钟,并覆盖00:00:00中时分 MOV CX,4 LEA SI,TIMEDIS LA3: PUSH CX MOV CL,4 ROL AX,CL MOV BL,AL AND BL,0FH OR BL,30H MOV [SI],BL INC SI POP CX CMP CX,3 ;跳过00:00中的':' JNZ P3 INC SI P3: LOOP LA3 PUSH DX ;设置秒,并覆盖00:00:00中的最后的秒 MOV CL,4 SHR DH,CL ;DH右移CL OR DH,30H MOV TIMEDIS+6,DH ;将DH传送到DIMEDIS+6 POP DX AND DH,0FH OR DH,30H MOV TIMEDIS+7,DH LEA DX,TIMEDIS ;显示时间 MOV AH,09H INT 21H RET ;时间调用后返回 TIMEDISPLAY ENDP code ends end start
/
本文档为【汇编显示时间日期源码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索