.MODEL SMALL
.STACK 100H
.DATA
TAMPIL DB 'Sekarang pukul : $'
WAKTU DB '00:00:00$' ; formatnya jam:min:sec
.CODE
MAIN PROC
MOV AX, @DATA ; inisialisasi DS
MOV DS, AX
LEA BX, WAKTU ; BX=offset address of string WAKTU
CALL AMBILWAKTU ;
LEA DX, TAMPIL ;
MOV AH, 09H ; print string TAMPIL
INT 21H
LEA DX, WAKTU ;
MOV AH, 09H ; print string WAKTU
INT 21H
MOV AH, 4CH ; interup 21h servis 4c
INT 21H
MAIN ENDP
AMBILWAKTU PROC
PUSH AX ;
PUSH CX ;
MOV AH, 2CH ; servis untuk ambil waktu sistem
INT 21H
MOV AL, CH ; set AL=CH , CH=jam yang didapatkan
CALL KONVERSI ; konversi ke ascii
MOV [BX], AX ; set [BX]= jamny , [BX] menunjuk ke jam dalam string WAKTU
MOV AL, CL ; set AL=CL , CL=menit
CALL KONVERSI ; call procedure KONVERSI
MOV [BX+3], AX ; set [BX+3]=menit , [BX] menunjuk ke menit dalam string WAKTU
MOV AL, DH ; set AL=DH , DH=detik
CALL KONVERSI ; call procedure KONVERSI
MOV [BX+6], AX ; set [BX+6]=detik ,
POP CX ;
POP AX ;
RET ;
AMBILWAKTU ENDP ;
KONVERSI PROC
; konversi dari binary ke ASCII
; input : AL=binary
; output : AX=ASCII
PUSH DX ;
MOV AH, 0 ;
MOV DL, 10 ;
DIV DL ;
OR AX, 3030H ; konversi dilakukan dari binary dalam AX ke ASCII
POP DX ;
RET ;
KONVERSI ENDP ;
END MAIN