时间输入格式:16:23:58.27(时:分:秒.1/100秒) (在纯dos下) DATA SEGMENT message2 db ' Please enter the time:','$' BUF2 DB 12,?;定义一缓冲区,存放输入的时间 time1 db ? time2 db ? time3 db ? time4 db ? time5 db ? time6 db ? time7 db ? time8 db ? time9 db ? time10 db ? time11 db ? ORG 10H DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
lea dx,message2;调用9号中断,显示提示语句 mov ah,9 int 21h MOV DX,OFFSET BUF2;调用0A中断,输入时间到缓冲区 MOV AH,0AH INT 21H mov bl,10;BL置如10,用作乘数 mov cx,0;将CX置零 MOV al,time1;将输入时间的小时位的十位数移入AL sub al,30h;转换为ASCII码 mul bl;乘以10 add ch,al;与CH相加 MOV al,time2;将输入时间的小时位的个位数移入AL sub al,30h;转换为ASCII码 add ch,al;于CH相加,得到小时位,存在CH ;以下为计算分钟位,存在CL MOV al,time4 sub al,30h mul bl add cl,al MOV al,time5 sub al,30h add cl,al ;以下为计算秒位,存在DH mov dx,0 mov al,time7 sub al,30h mul bl add dh,al MOV al,time8 sub al,30h add dh,al ;以下为计算1/100秒位,存在DL mov al,time10 sub al,30h mul bl add dl,al MOV al,time11 sub al,30h add dl,al mov ah,2dh;调用2D号中断,设置时间 int 21h MOV AH,4CH INT 21H CODE ENDS END START 日期输入格式:2007-03-21DATA SEGMENT message1 db 'Please enter the date:','$' BUF1 DB 11,? date1 db ? date2 db ? date3 db ? date4 db ? date5 db ? date6 db ? date7 db ? date8 db ? date9 db ? date10 db ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX lea dx,message1 mov ah,9 int 21h MOV DX,OFFSET BUF1 MOV AH,0AH INT 21H mov cx,0 MOV Al,date1 sub al,30h mov bx,1000 mov ah,0 mul bx add cx,ax mov al,date2 sub al,30h mov bl,100 mul bl add cx,ax mov al,date3 sub al,30h mov bl,10 mul bl add cx,ax mov al,date4 sub al,30h mov ah,0 add cx,ax mov dx,0 mov al,date6 sub al,30h mul bl add dh,al mov al,date7 sub al,30h add dh,al mov al,date9 sub al,30h mul bl add dl,al mov al,date10 sub al,30h add dl,al mov ah,2bh int 21h MOV AH,4CH INT 21H CODE ENDS END START
message2 db ' Please enter the time:','$'
BUF2 DB 12,?;定义一缓冲区,存放输入的时间
time1 db ?
time2 db ?
time3 db ?
time4 db ?
time5 db ?
time6 db ?
time7 db ?
time8 db ?
time9 db ?
time10 db ?
time11 db ?
ORG 10H
DATA ENDSCODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
lea dx,message2;调用9号中断,显示提示语句
mov ah,9
int 21h MOV DX,OFFSET BUF2;调用0A中断,输入时间到缓冲区
MOV AH,0AH
INT 21H mov bl,10;BL置如10,用作乘数
mov cx,0;将CX置零
MOV al,time1;将输入时间的小时位的十位数移入AL
sub al,30h;转换为ASCII码
mul bl;乘以10
add ch,al;与CH相加 MOV al,time2;将输入时间的小时位的个位数移入AL
sub al,30h;转换为ASCII码
add ch,al;于CH相加,得到小时位,存在CH ;以下为计算分钟位,存在CL
MOV al,time4
sub al,30h
mul bl
add cl,al MOV al,time5
sub al,30h
add cl,al ;以下为计算秒位,存在DH
mov dx,0
mov al,time7
sub al,30h
mul bl
add dh,al MOV al,time8
sub al,30h
add dh,al ;以下为计算1/100秒位,存在DL
mov al,time10
sub al,30h
mul bl
add dl,al MOV al,time11
sub al,30h
add dl,al mov ah,2dh;调用2D号中断,设置时间
int 21h MOV AH,4CH
INT 21H
CODE ENDS
END START 日期输入格式:2007-03-21DATA SEGMENT
message1 db 'Please enter the date:','$'
BUF1 DB 11,?
date1 db ?
date2 db ?
date3 db ?
date4 db ?
date5 db ?
date6 db ?
date7 db ?
date8 db ?
date9 db ?
date10 db ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
lea dx,message1
mov ah,9
int 21h
MOV DX,OFFSET BUF1
MOV AH,0AH
INT 21H
mov cx,0
MOV Al,date1
sub al,30h
mov bx,1000
mov ah,0
mul bx
add cx,ax
mov al,date2
sub al,30h
mov bl,100
mul bl
add cx,ax
mov al,date3
sub al,30h
mov bl,10
mul bl
add cx,ax
mov al,date4
sub al,30h
mov ah,0
add cx,ax
mov dx,0
mov al,date6
sub al,30h
mul bl
add dh,al
mov al,date7
sub al,30h
add dh,al
mov al,date9
sub al,30h
mul bl
add dl,al
mov al,date10
sub al,30h
add dl,al
mov ah,2bh
int 21h
MOV AH,4CH
INT 21H
CODE ENDS
END START