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 ENDS
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-21
DATA 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