MIPS: Solicitar al usuario que introduzca una cadena

En un post anterior, vimos cómo mostrar mensajes en pantalla para informar al usuario de que debe introducir algún dato o mostrar resultados. En este post vamos a ver cómo solicitar al usuario que introduzca una cadena, haciendo uso de llamadas al sistema.
Como podemos ver en el siguiente código, en la sección de datos, estamos reservando un espacio de 100 bytes en memoria que utilizaremos para alojar la cadena introducida por el usuario.
.data   # sección de datos 
   str: .space 100 
   
.text   # sección de código
.globl main 

main:
   la $a0, str   # Cargamos en el registro $a0 la dirección del espacio reservado para almacenar la cadena leída
   li $a1, 100   # Cargamos en el registro $a1 la longitud máxima de la cadena leída
   li $v0, 8     # Realizamos la llamada al sistema para leer una cadena
   syscall

El código es muy sencillo:

  • Primero cargamos en el registro $a0 la dirección del espacio en memoria reservado para alojar la cadena. Como ya comentamos anteriormente, es importante recordar que los registros $a0, $a1, $a2 y $a3 guardan los argumentos para las subrutinas. Estos registros pueden ser modificados dentro de las subrutinas.
  • Haciendo uso de la instrucción li (load inmediate), cargamos en el registro $a1 la longitud de la cadena a leer.
  • En el siguiente paso cargamos en el registro $v0 el código de la llamada al sistema que permite leer un string (8).
  • Hacemos la llamada al sistema.
Como ya hemos comentado en otras ocasiones, en las llamadas al sistema, no importa el orden en que carguemos los argumentos y el valor de la llamada al sistema.
Be the first to comment

Por favor acceder para comentar.