Skip to main content

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.

date


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 BIOS 0x1A 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.