📄 date×how.asm
字号:
;a proc to show date&time
;there is also a TSR.
;********************************************************
;macros
print_string macro string
push ax
push dx
mov dx,offset string
mov ah,9h
int 21h
pop dx
pop ax
endm
print_char macro char
push ax
push dx
mov dl,char
mov ah,2h
int 21h
pop dx
pop ax
endm
;********************************************************
.model small
stack segment stack
WORD 100 DUP(?)
stack ends
DATA segment para
msg_date byte 'Date: ','$'
msg_time byte 0dh,0ah,'Time: ','$'
count_buffer byte 5 DUP(0),'$'
DATA ends
CODE segment para
assume cs:code, ds:data, ss:stack
;********************************************************
main proc far
mov ax,data
mov ds,ax
mov es,ax
call show_date
call SHOW_TIME
mov ax,4c00h
INT 21H
RET
main endp
;******************************************************
show_date proc near
print_string msg_date
mov ah,2ah ;取得系统日期
int 21h ;AL星期,CX年,DH月,DL日
xor ah,ah
call DEAL_NUM ;显示星期几,0-6
print_char ' '
mov ax,cx
call DEAL_NUM ;显示year
print_char '-'
xor ah,ah
mov al,dh
call deal_Num ;month
print_char '-'
mov al,dl
call DEAL_NUM ;day
print_char ' '
ret
show_date endp
;*******************************************************
SHOW_TIME proc near
print_string msg_time
mov ah,2ch ;取得系统time
INT 21h ;CH:CL hour:minute,DH:DL second:1/100s
xor ah,ah
mov al,ch
call DEAL_NUM
print_char ':'
mov al,cl
call DEAL_NUM
print_char ':'
mov al,dh
call DEAL_NUM
RET
SHOW_TIME ENDP
;*******************************************************
DEAL_NUM PROC NEAR ;将一个字转换成十进制并输出子程序
push ax
push bx
push cx
push dx
push di
MOV CX,5
MOV BX,10
MOV DI,OFFSET count_buffer+4 ;从后往前保存
next:
XOR DX,DX ;将DX清零
DIV BX
OR DL,30H ;也可用ADD DL,30H
MOV BYTE PTR [DI],DL ;将16进制的数转换到ASCII中对应的数,0的ASCII码为 30H (48D)
CMP AX,0
JZ PRINT ;当商为0时,直接去打印,可不打印高位的0.
DEC DI
LOOP next
PRINT:
MOV DX,DI ;从DI开始打印,因为RESULT不一定够5位
MOV AH,9
INT 21H ;调用DOS的21号中断的9号功能,将DB输出
pop di
pop dx
pop cx
pop bx
pop ax
RET
DEAL_NUM ENDP
;*********************************************************
code ends
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -