;------------------- Define Prog------------------
org 1000
;//--------------------------------------------------
.model small
.stack 64
;-------------------- Data Segment--------------
.data
input_Entry dw 0;
str_Conv_int_array db 3 dup(?); { memory For Characters }
year db 0;
month db 0;
days db 0;
len dw 0;
int_Str dw 0;
;------------------- Code Segment----------------
.code
call input ; { Procedure input}
call convert_Str_To_Int ; { Procedure convert_Str_To_Int}
call Call_Replace_date ; { Procedure Call_Replace_date }
call Display_On_Monitor ; { Procedure Display_On_Monitor }
mov ah,10
int 16h
;---------------Input Procedure--------------------
input proc ;{ Entry Data From KeyBoard }
mov cx,0 ;{Counter = 0 }
lea si,str_Conv_int_array
lb1:
mov ah,10
int 16h
cmp al,30
jb external_0 ;{Jump external_0 }
cmp al,39
ja external_0 ;{Jump external_0 }
inc cx ;{ CX ++ }
mov ah,0eh
int 10h
mov [si],al
cmp cx,3
jne lb1 ;{Jump Lable 1 }
external_0:
mov len,cx
ret
input endp ;{End Procedure}
;--------------convert_Str_To_Int Procedure---------------------------
convert_Str_To_Int proc
mov dl,10
mov ax,0
mov bl,1
lea si,str_Conv_int_array
mov cx,len
add si,2
lb2:
mov al,[si]
and al,00fh
mul bl
add input_Entry,ax
mov al,bl
mul dl
dec si
loop lb2 ;{Jump Lable 2 }
ret
convert_Str_To_Int endp ;{End Procedure}
;-----------------Call_Replace_date procedure---------------------------
Call_Replace_date proc
mov dx,0
mov ax,input_Entry
mov bx,365 ; { Calculate year }
div bx
mov year,al
mov ax,dx
mov bx,0
mov bl,30 ; { Calculate Month}
div bl
mov month,ah
mov days,al
ret
Call_Replace_date endp ;{End Procedure}
;--------------Display_On_Monitor Procedure--------------------------
Display_On_Monitor proc
;------ { Display 20}------------------
mov al,'2'
mov ah,0eh
int 10h
mov al,'0'
int 10h;
;-------- Calculate And Display Year ---------
mov ah,0
mov al,9
add al,year
cmp al,10
jb lb3; ; { Jump year }
mov bl,10
div bl
or al,030h
push ax
mov ah,0eh
int 10h
pop ax
mov al,ah
lb3: ;{ Calculate And Display Year}
or al,030h
mov ah,0eh
int 10h
;-------- Calculate Month ---------
;--------- { Display '/' Seprector } -----------------
mov al,'/'
;-----------------------------------------------------------
mov ah,0eh
int 10h
mov ah,0
mov al,month
cmp al,10
jb lb4 ;{ Jump Month}
mov bl,10
div bl
or al,030h
push ax
mov ah,0eh
int 10h
pop ax
mov al,ah
lb4: ;{ Calculate And Display Month}
or al,030h
int 10h
;-------- Calculate Days ---------
;--------- { Display '/' Seprector } -----------------
mov al,'/'
;-----------------------------------------------------------
mov ah,0eh
int 10h
mov ah,0
mov al,days
cmp al,10
jb lb5 ;{Jump Days}
mov bl,10
div bl
or al,030h
push ax
mov ah,0eh
int 10h
pop ax
mov al,ah
lb5: ;{ Calculate And Display Days}
or al,030h
int 10h
ret
Display_On_Monitor endp ;{End Procedure}
end