Date
Este es el código del comando date
en DariOS. Se encarga de obtener la fecha actual del sistema desde la BIOS y mostrarla en pantalla en formato DD/MM/AA
.
Propósito
Leer la fecha del sistema (día, mes y año) usando la interrupción 0x1A
de la BIOS y mostrarla carácter por carácter en formato DD/MM/AA
.
Lógica paso a paso
push ax
push bx
push cx
push dx
- Guarda los registros para no alterar su contenido durante la ejecución del comando.
mov ah, 0x04
int 0x1A
- Usa la función
0x04
de la interrupción BIOS0x1A
para obtener la fecha actual:DH
contiene el día en BCD.DL
contiene el mes en BCD.CH
contiene el año (últimos dos dígitos) en BCD.
Mostrar el día
mov al, dh
shr al, 4
add al, 30h
call imprimir_caracter
- Extrae el nibble alto (decenas del día), lo convierte a ASCII y lo imprime.
mov al, dh
and al, 0x0F
add al, 30h
call imprimir_caracter
- Extrae el nibble bajo (unidades del día), lo convierte a ASCII y lo imprime.
mov al, "/"
call imprimir_caracter
- Imprime el carácter
/
como separador.
Mostrar el mes
mov al, dl
shr al, 4
add al, 30h
call imprimir_caracter
- Extrae las decenas del mes, convierte a ASCII y muestra.
mov al, dl
and al, 0x0F
add al, 30h
call imprimir_caracter
- Extrae las unidades del mes, convierte a ASCII y muestra.
mov al, "/"
call imprimir_caracter
- Imprime el carácter
/
como separador.
Mostrar el año
mov al, ch
shr al, 4
add al, 30h
call imprimir_caracter
- Extrae las decenas del año (últimos dos dígitos), convierte a ASCII y muestra.
mov al, ch
and al, 0x0F
add al, 30h
call imprimir_caracter
- Extrae las unidades del año (últimos dos dígitos), convierte a ASCII y muestra.
Restaurar registros
pop dx
pop cx
pop bx
pop ax
- Restaura el contenido original de los registros utilizados.
Finalizar
ret
- Termina la ejecución del comando y retorna al flujo principal.