MIPS: Solicitar al usuario introducir un entero y mostrarlo por pantalla

En el post anterior, vimos cómo solicitar al usuario que introduzca una cadena y mostrarla a continuación en pantalla junto con un mensaje informativo. Este post tan sólo es una variante del anterior en el que se solicita al usuario que introduzca un entero y se muestre por pantalla que nos va a ser muy útil para ver algunos detalles.

Para empezar, en la sección .data definimos los mensajes que se van a mostrar al usuario.

.data
     msg:  .asciiz "Introduce un entero: "
     msge:  .asciiz "El número introducido es: "

.text
.globl main 

 main:
    # Mostrar mensaje que solicita introducir un entero
    li $v0, 4
    la $a0, msg
    syscall

    # Solicitar al usuario que introduzca un entero. El entero se almacenará en el registro $v0
    li $v0, 5
    syscall

    # Movemos el contenido del registro $v0 a un registro temporal $t0
    move $t0, $v0

    # Mostrar mensaje informativo
    li $v0, 4
    la $a0, msge
    syscall
    
    # Mostramos en pantalla el número introducido
    move $a0, $t0
    li $v0, 1
    syscall
Vamos a comentar algunos detalles del código:

  • En el primer bloque de código tan sólo se muestra un mensaje al usuario para informarle de que debe introducir un usuario.
  • En el segundo bloque se solicita al usuario que introduzca un entero. Para ello se hace uso de la llamada al sistema 5 cargando en el registro $v0 el valor 5. Es importante destacar que esta llamada al sistema devuelve en $v0 el valor introducido por el usuario.
  • En el tercer bloque de código movemos el contenido del registro $v0 a un registro temporal $t0. ¿Por qué hacemos ésto? Simplemente porque en el siguiente bloque de código tenemos que usar el registro $v0 para mostrar un mensaje informativo y si no moviéramos el valor a otro registro, lo perderíamos.
  • En el cuarto bloque mostramos un mensaje informativo al usuario.
  • En el quinto bloque hacemos uso de la llamada al sistema 1 que nos permite imprimir un entero en pantalla. Esta llamada al sistema requiere que introduzcamos en el registro $a0 el número entero a imprimir. Pues bien, como ese valor lo tenemos almacenado en un registro temporal $t0, simplemente lo movemos (move $a0, $t0).
Be the first to comment

Por favor acceder para comentar.