Imprimir cadena
Este es el codigo de la función imprimir_cadena
de DariOS
Explicación de la función imprimir_cadena
La función imprimir_cadena
se utiliza para mostrar texto en pantalla, caracter por caracter. Está escrita para arquitectura x86 en modo real (16 bits).
Esta función depende a su vez de imprimir_caracte
Propósito
Esta función recorre una cadena de caracteres terminada en cero (byte nulo 0x00
) y llama a otra subrutina (imprimir_caracter
) para mostrar cada caracter en pantalla.
Lógica paso a paso
imprimir_cadena:
- Etiqueta que marca el inicio de la subrutina.
lodsb
- Carga el siguiente byte apuntado por
SI
en el registroAL
y aumentaSI
. - Esta instrucción espera que
DS:SI
apunte a una cadena de texto.
or al, al
- Realiza un OR lógico entre
AL
yAL
para actualizar los flags del procesador. - Si
AL
es cero (caracter nulo), el flag Zero queda activado.
jz Fin_de_cadena
- Si el caracter actual es cero (fin de cadena), salta a
Fin_de_cadena
. - Utiliza el condicional
jz
(jump if zero)
call imprimir_caracter
- Llama a la subrutina que muestra un solo caracter en pantalla.
jmp imprimir_cadena
- Vuelve al inicio para procesar el siguiente caracter.
Fin_de_cadena:
ret
- Etiqueta de fin.
- Finaliza la subrutina y vuelve al llamador.
Requisitos
SI
debe apuntar a una cadena terminada en0x00
.- La función
imprimir_caracter
debe estar definida previamente y saber usar el valor enAL
.
Uso típico
Antes de llamar a imprimir_cadena
, se prepara el puntero:
mov si, Mensaje
call imprimir_cadena