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
SIen el registroALy aumentaSI. - Esta instrucción espera que
DS:SIapunte a una cadena de texto.
or al, al
- Realiza un OR lógico entre
ALyALpara actualizar los flags del procesador. - Si
ALes 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
SIdebe apuntar a una cadena terminada en0x00.- La función
imprimir_caracterdebe 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