Logo Studenta

Fecha y hora del sistema

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

;GUARDAMOS VARIABLES EN HEXADECIMAL
;Servivio Hora
mov ah, 2Ch
int 21h
mov offset horas, ch
mov offset minutos, cl
mov offset segundos, dh
;servicio Fecha
mov ah, 2Ah
int 21h
mov offset dia_semana, al
mov offset anio, cx
mov offset mes, dh
mov offset dia_mes, dl
jmp Mostrar_Dia_Semana
;RUTINAS
Mostrar_Dia_Semana:
;Obtener el numero del dia de la semana y guardarlo en CX
mov cl, [dia_semana]
mov ch, 0
;Obtener la direccion de memoria del vector de dias
;Y le sumamos el dia de la semana multiplicado por 10
;Para obtener la direccion exacta del dia en el vector
mov bx, offset msj_dia_semana
mov ax, cx
mov cl, 0Ah
mul cx
add bx, ax
mov ah, 09
mov dx, bx
int 21h 
Mostrar_Dia:
;Obtener el numero del dia del mes
;Dividimos entre 10 para obtener el numero en decimal
;Luego lo transformamos a ASCII
mov al, [dia_mes]
mov cl, 10
mov ah, 0
div cl
or ax, 3030h
mov bx, offset dia_mes_conv
mov [bx], al
inc bx
mov [bx], ah
mov ah, 09
mov dx, offset dia_mes_conv
int 21h 
Mostrar_Mes:
;Obtener el numero del mes, y guardarlo en CX
mov cl, [mes] 
add cl, 2
mov ch, 0
;Obtener la direccion de memoria del vector de mes
;Y le sumamos el numero del mes multiplicado por 12
;Para obtener la direccion exacta del mes
mov bx, offset msj_mes
mov ax, cx
mov cl, 08h
mul cx
add bx, ax
sub bx, 08h
mov ah, 09
mov dx, bx
int 21h 
Mostrar_Anio:
;Obtener el numero del anio actual
;AL = 201 | AH = 1
;Hay que ir dividiendo entre 10 el registro AL para ir guardando
;digito por digito y asi guardarlo en variables separadas
;para que posteriormente se le pueda hacer un OR 3030h y obtener el ASCII
mov bx, offset anio
mov ax, [bx]
mov cl, 10
div cl
mov dig1, ah
mov ah, 0
mov cl, 10
div cl
mov dig2, ah
mov ah, 0
mov cl, 10
div cl
mov dig3, ah
mov ah, 0
mov cl, 10
div cl
mov dig4, ah
or dig4, 30h
or dig3, 30h
or dig2, 30h
or dig1, 30h
;Imprimimos el anio numero por numero
mov ah, 09
mov dx, offset dig4
int 21h
mov dx, offset dig3
int 21h
mov dx, offset dig2
int 21h
mov dx, offset dig1
int 21h
mov dx, offset salto_linea
int 21h
jmp Mostrar_Hora 
Mostrar_Hora:
;Obtener el numero de la hora
;Comparamos si es mayor o igual a 12 para cambiar formato
mov ah, 09
mov dx, offset msj_hora
int 21h
mov al, [horas]
cmp al, 0Ch
jae cambia_formato
formato_normal:
mov tipo_formato, 0 ;El formato es "AM"
mov cl, 10
mov ah, 0
div cl
or ax, 3030h
mov bx, offset horas_conv
mov [bx], al
inc bx
mov [bx], ah
mov ah, 09
mov dx, offset horas_conv
int 21h
Mostrar_minutos:
;Obtener el numero de minutos
;Hacer lo mismo que con el dia del mes
mov ah, 09
mov dx, offset msj_separador
int 21h
mov al, [minutos]
mov cl, 10
mov ah, 0
div cl
or ax, 3030h
mov bx, offset min_conv
mov [bx], al
inc bx
mov [bx], ah
mov ah, 09
mov dx, offset min_conv
int 21h
Mostrar_segundos:
;Obtener el numero de segundos
;Hacer lo mismo que con minutos
mov ah, 09
mov dx, offset msj_separador
int 21h
mov al, [segundos]
mov cl, 10
mov ah, 0
div cl
or ax, 3030h
mov bx, offset seg_conv
mov [bx], al
inc bx
mov [bx], ah
mov ah, 09
mov dx, offset seg_conv
int 21h
mov bx, offset tipo_formato
add bl, formato
mov dx, bx
int 21h 
mov ah,4ch 
int 21h
cambia_formato:
sub al, 0Ch
mov formato, 4 ;El formato es "PM"
jmp formato_normal
;****************************** FIN *************************
;Variables para guardar los valores en hexadecimal
horas DB ?, '$'
minutos DB ?, '$'
segundos DB ?, '$'
dia_semana DB ?, '$'
dia_mes DB ?, '$'
mes DB ?, '$'
anio DB ?, ?, '$'
formato DB ?
;Variables convertidas a ASCII
dia_mes_conv DB ?, ?, " de ", '$'
anio_conv DB ?, ?, '$'
horas_conv DB ?, ?, '$'
min_conv DB ?, ?, '$'
seg_conv DB ?, ?, '$'
dig1 DB ?, '$'
dig2 DB ?, '$'
dig3 DB ?, '$'
dig4 DB ?, '$'
;Variables que contienen cadena de caracteres
;msj_dia_semana = 10 caracteres por casilla
;msj_dia_semana = 11 caracteres por casilla
msj_hora DB "Hora: ",'$'
msj_separador DB " :",'$'
msj_dia_semana DB "Domingo $"," Lunes $","Martes $","Miercoles$","Jueves $","Viernes $","Sabado $"
msj_mes DB "Enero del $","Febrero del $","Marzo del $","Abril del $","Mayo del $","Junio del $","Julio del $", "Agosto del $","Septiembre del $","Octubre del $","Noviembre del $","Diciembre del $"
tipo_formato DB " am$", " pm$"
salto_linea DB 0Ah, 0Dh,'$'

Continuar navegando