Leer comando
Este es el código de la función leer_comando
de DariOS
Explicación de la función leer_comando
La función leer_comando
se encarga de leer una tecla del teclado. Si es una tecla especial como Backspace (0x08
) o Enter (0x0D
), llama a la rutina correspondiente. Si no, guarda el carácter en el buffer del shell y lo imprime por pantalla.
Propósito
Leer la entrada del usuario en el shell carácter por carácter y actuar dependiendo de la tecla.
Lógica paso a paso
mov ah, 0
int 0x16
- Espera a que el usuario presione una tecla y guarda el carácter leído en
AL
.
cmp al, 0x08
je borrar_caracter
- Si el carácter es Backspace (
0x08
), salta a la subrutinaborrar_caracter
.
cmp al, 0x0D
je enter_shell
- Si el carácter es Enter (
0x0D
), salta a la subrutinaenter_shell
para procesar el comando.
mov [buffer_shell + bx], al
inc bx
- Guarda el carácter leído en el buffer del shell e incrementa el índice
BX
.
mov ah, 0x0E
int 0x10
- Imprime el carácter en pantalla usando la interrupción del BIOS
0x10
(modo TTY).
ret
- Retorna al programa llamador.
Requisitos
buffer_shell
debe estar definido y tener espacio suficiente.bx
debe usarse como índice de posición dentro del buffer.- Las subrutinas
borrar_caracter
yenter_shell
deben existir.