Skip to main content

Imprimir cadena

Este es el codigo de la función imprimir_cadena de DariOS

imprimir_cadena

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 registro AL y aumenta SI.
  • Esta instrucción espera que DS:SI apunte a una cadena de texto.
or al, al
  • Realiza un OR lógico entre AL y AL 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 en 0x00.
  • La función imprimir_caracter debe estar definida previamente y saber usar el valor en AL.

Uso típico

Antes de llamar a imprimir_cadena, se prepara el puntero:

mov si, Mensaje
call imprimir_cadena