STACK SEGMENT STACK
      DW 200 DUP (?)
STACK ENDS
DATA SEGMENT
     SPACE DB 1000 DUP (' ')
   PATTERN	DB 3 DUP ('* '),0C9H,26 DUP (0CDH),0BBH,3 DUP (' *')
          	DB 3 DUP ('* '),0BAH,26 DUP (20H),0BAH,3 DUP (' *')
           	DB 3 DUP ('* '),0BAH,26 DUP (20H),0BAH,3 DUP (' *')
DB 3 DUP ('*'),0BAH,1 DUP ('DATETIME'),0BAH,3 DUP ('*')
           	DB 3 DUP ('* '),0C8H,26 DUP (0CDH),0BCH,3 DUP (' *')
   DBUFFER DB 8 DUP (':'),12 DUP (' ')
  DBUFFER1 DB 20 DUP (' ')
STR DB 0DH,0AH,'PLEASE INPUT DATE(D)OR TIME(T) OR QUIT(Q)$'
DATA ENDS
CODE SEGMENT
      ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: MOV AX,0001H          			
       INT 10H
       MOV AX,DATA
       MOV DS,AX
       MOV ES,AX
       MOV BP,OFFSET SPACE 
       MOV DX,0B00H
       MOV CX,1000
       MOV BX,0040H          			
       MOV AX,1300H
       INT 10H
       MOV BP,OFFSET PATTERN 			
       MOV DX,0B00H
       MOV CX,200
       MOV BX,003EH          			
       MOV AX,1301H
       INT 10H
       LEA DX,STR            			
       MOV AH,9
       INT 21H
       MOV AH,1              			
       INT 21H
       CMP AL,44H            			
       JNE AA
       CALL DATE             			
AA:   CMP AL,54H            			
       JNE BB
       CALL TIME             			
BB:   CMP AL,51H            			
       JNE START
       MOV AH,4CH            			
       INT 21H
DATE   PROC NEAR            			
DISPLAY:MOV AH,2AH           			
       INT 21H
       MOV SI,0
       MOV AX,CX
       MOV BX,100
       DIV BL
       MOV BL,AH
       CALL BCDASC1         			
       MOV AL,BL
       CALL BCDASC1
       INC SI
       MOV AL,DH
       CALL BCDASC1
       INC SI
       MOV AL,DL
       CALL BCDASC1
       MOV BP,OFFSET DBUFFER1
       MOV DX,0C0DH
MOV CX,20
 MOV BX,004EH        					
       MOV AX,1301H
       INT 10H
       MOV AH,02H         				 
       MOV DX,0300H
       MOV BH,0
       INT 10H
       MOV BX,0018H
REPEA: MOV CX,0FFFFH       			
REPEAT:LOOP REPEAT
       DEC BX
       JNZ REPEA
       MOV AH,01H          				
       INT 16H
       JE  DISPLAY
       JMP START
       MOV AX,4C00H
       INT 21H
       RET
DATE  ENDP
TIME   PROC NEAR        				
DISPLAY1:MOV SI,0
       MOV BX,100
       DIV BL
       MOV AH,2CH       				
       INT 21H
       MOV AL,CH
       CALL BCDASC      				
       INC SI
       MOV AL,CL
       CALL BCDASC
       INC SI
       MOV AL,DH
       CALL BCDASC
       MOV BP,OFFSET DBUFFER
       MOV DX,0C0DH
       MOV CX,20
       MOV BX,004EH     				
       MOV AX,1301H
       INT 10H
       MOV AH,02H
       MOV DX,0300H
       MOV BH,0
       INT 10H
       MOV BX,0018H
RE:    MOV CX,0FFFFH
REA:   LOOP REA
       DEC BX
       JNZ RE
       MOV AH,01H
       INT 16H
       JE  DISPLAY1
       JMP START
       MOV AX,4C00H
       INT 21H
       RET
TIME  ENDP
BCDASC PROC NEAR                	
       PUSH BX
       CBW
       MOV BL,10
       DIV BL
       ADD AL,'0'
       MOV DBUFFER[SI],AL
       INC SI
       ADD AH,'0'
       MOV DBUFFER[SI],AH
       INC SI
       POP BX
       RET
BCDASC ENDP
BCDASC1 PROC NEAR             		 
       PUSH BX
       CBW
       MOV BL,10
       DIV BL
       ADD AL,'0'
       MOV DBUFFER1[SI],AL
       INC SI
       ADD AH,'0'
       MOV DBUFFER1[SI],AH
       INC SI
       POP BX
       RET
BCDASC1 ENDP
CODE   ENDS
END START
