PROGRAMA RELOJ PARA MOSTRAR EN PANTALLA EL RELOJ DE LA MAQUINA
.MODEL SMALL ;MODELO SMALL
.DATA ;SEGMENTO DE DATOS
;VARIABLES
CADENA DB 9 DUP (' '),'$'
RESIDUO DB ?
AUX DB ?
HDEC DB ?
HUNI DB ?
MDEC DB ?
MUNI DB ?
SDEC DB ?
SUNI DB ?
.STACK 100H ;PILA
.CODE ;CODIGO
INICIO:
MOV AX, @DATA
MOV DS, AX
MOV AL, 3 ;MODO DE VIDEO
MOV AH, 0 ;80 X 25
INT 10H
CAPTURA:
MOV AH, 2CH ;LLAMA LA INT QUE CAPTURA EL RELOJ DE LA MAQUINA
INT 21H
CALL RELOJ ;LLAMADA AL PROCEDIMIENTO RELOJ
MOV AH, 2
MOV DL, 35 ;POSICIONA EL CURSOR
MOV DH, 10 ;EN LA FILA 10, COLUMNA 35
INT 10H
MOV AH, 02H
MOV DL, HDEC
INT 21H
MOV DL, HUNI
INT 21H
MOV AH, 02H
MOV DL, 58
INT 21H
MOV AH, 2
MOV DL, 38 ;POSICIONA EL CURSOR
MOV DH, 10 ;EN LA FILA 10, COLUMNA 38
INT 10H
MOV AH, 02H
MOV DL, MDEC
INT 21H
MOV DL, MUNI
INT 21H
MOV AH, 02H
MOV DL, 58
INT 21H
MOV AH, 2
MOV DL, 41 ;POSICIONA EL CURSOR
MOV DH, 10 ;EN LA FILA 10, COLUMNA 41
INT 10H
MOV AH, 02H
MOV DL, SDEC
INT 21H
MOV DL, SUNI
INT 21H
MOV AH, 1 ;VERIFICA SI SE HA PRESIONADO TECLA
INT 16H
JZ CAPTURA ;SINO SALTA A CAPTURA Y EL RELOJ SIGUE FUNCIONADO
MOV AX, 4CH ;REGRESA AL DOS
INT 21H
RELOJ PROC ;PROCEDIMIENTO QUE OBTIENE EL RELOJ DE LA MAQUINA
CALL HORAS ;LLAMADA A LOS PROCEDIMIENTOS DE HORAS, MINUTOS Y SEGUNDOS
CALL MINUTOS
CALL SEGUNDOS
RET ;RETORNO
ENDP ;FIN DEL PROCEDIMIENTO
HORAS PROC ;PROCEDIMIENTO QUE OBTIENE LAS HORAS
MOV AL, CH ;SE OBTIENEN LAS HORAS (0-23)
AAM ;SE DESEMPAQUETA EN BCD
ADD AX, 3030H ;SE CONVIERTE A ASCII
MOV HDEC, AH
MOV HUNI, AL
RET ;RETORNO
ENDP ;FIN DEL PROCEDIMIENTO
MINUTOS PROC ;PROCEDIMIENTO QUE OBTIENE LOS MINUTOS
MOV AL, CL ;SE OBTIENEN LOS SEGUNDOS
AAM ;SE DESEMPAQUETA EN BCD
ADD AX, 3030H ;SE CONVIERTE A ASCII
MOV MDEC, AH
MOV MUNI, AL
RET ;RETORNO
ENDP ;FIN DEL PROCEDIMIENTO
SEGUNDOS PROC ;PROCEDIMIENTO QUE OBTIENE LOS SEGUNDOS
MOV AL, DH ;SE OBTIENEN LOS SEGUNDOS
AAM ;SE DESEMPAQUETA EN BCD
ADD AX, 3030H ;SE CONVIERTE A ASCII
MOV SDEC, AH
MOV SUNI, AL
RET ;RETORNO
ENDP ;FIN DEL PROCEDIMIENTO
END INICIO ;FIN DEL PROGRAMA