Time
Este es el código del comando time en DariOS. Se encarga de obtener la hora actual del sistema y mostrarla en pantalla en formato HH:MM:SS, utilizando la BIOS.

Propósito
Leer la hora del sistema desde la BIOS (horas, minutos y segundos) y mostrarla carácter por carácter en pantalla, respetando el formato legible HH:MM:SS.
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, 0x02
int 0x1A
- Usa la función
0x02de la interrupción BIOS0x1Apara obtener la hora.CHcontiene las horas (en BCD).CLcontiene los minutos (en BCD).DHcontiene los segundos (en BCD).
Mostrar las horas
mov al, ch
shr al, 4
add al, 30h
call imprimir_caracter
- Extrae el nibble alto (decenas de la hora), lo convierte a ASCII y lo imprime.
mov al, ch
and al, 0x0F
add al, 30h
call imprimir_caracter
- Extrae el nibble bajo (unidades de la hora), lo convierte a ASCII y lo imprime.
mov al, ":"
call imprimir_caracter
- Imprime el carácter
:como separador.
Mostrar los minutos
mov al, cl
shr al, 4
add al, 30h
call imprimir_caracter
- Extrae las decenas de los minutos, convierte a ASCII y muestra.
mov al, cl
and al, 0x0F
add al, 30h
call imprimir_caracter
- Extrae las unidades de los minutos, convierte a ASCII y muestra.
mov al, ":"
call imprimir_caracter
- Imprime el carácter
:como separador.
Mostrar los segundos
mov al, dh
shr al, 4
add al, 30h
call imprimir_caracter
- Extrae las decenas de los segundos, convierte a ASCII y muestra.
mov al, dh
and al, 0x0F
add al, 30h
call imprimir_caracter
- Extrae las unidades de los segundos, 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.