Hi..
This is my fist time, I need your help guys to figure out what is the problem with my code. My program is to show time in this format " TIME:Hours : minute : seconds : Hunderthseconds" , but , the problem is that it didn't show correct numbers, it shows me just charachers I don't understand. As far as I know function AH = 2CH INT 21H, returns ASCII code for time " CH=hour, CL = minutes, DH = seconds, DL = 5/100 seconds"
... So, could you please figure out what is wrong with this code,
Thank you very much.
TITLE " Project "
.MODEL SMALL
.STACK 200
.DATA
MSG1 DB 'TIME:$'
MSG2 DB ?,'$'
.CODE
MAIN PROC
MOV AX, @DATA ; get the address of the data segment
MOV DS, AX ; and store it n register DS
MOV AH, 9 ; display string function
LEA SI, MSG1 ; get memory location of first message
MOV DX, SI ; and store it in the DX register
INT 21H
MOV AH, 2CH ; Get time function 2CH interrupt 21H
INT 21H
LEA DI, MSG2 ; Get MSG2 address
MOV BH, 3AH ; Copy the ASCII code for :
MOV [DI], CH ; Copy hours into MSG2
CALL WRITING ; call function Writing to write it on the standard output "screen"
MOV [DI], BH ; Copy minutes
CALL WRITING ; call function writing
MOV [DI], CL
CALL WRITING
MOV [DI], BH
CALL WRITING
MOV [DI], DH
CALL WRITING
MOV [DI], BH
CALL WRITING
MOV [DI], DL
CALL WRITING
MOV AH, 07
INT 21H
MOV AX,4C00H ; Exit to DOS function
INT 21H
MAIN ENDP
WRITING PROC
PUSH DX ; Save value of DX
MOV AH, 02 ; Function 02 of interrput 21H to write character to stander output
MOV DL, MSG2 ; Copy content of MSG2 into DL
INT 21H
POP DX ; get the original value of DX again.
RET
WRITING ENDP
END MAIN