MIPS: Solicitar al usuario dos números enteros y comparar si son iguales

Siguiendo con ejemplos sencillitos de programación en ensamblador MIPS, vamos a ver cómo solicitar al usuario dos números enteros y mostrar un mensaje en pantalla indicando si son iguales o no. De este modo, pondremos en práctica las bifurcaciones condicionales y los saltos incondicionales.
.data
     msg1:  .asciiz "Introduce un entero: "
     msg2:  .asciiz "Introduce otro entero: "
     msge:  .asciiz "Los números son iguales."
     msgn:  .asciiz "Los números no son iguales."

.text
.globl main 

 main:
         # Mostrar mensaje que solicita introducir el primer entero
         li $v0, 4
         la $a0, msg1
         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 que solicita introducir el segundo entero
         li $v0, 4
         la $a0, msg2
         syscall

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

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

         beq $t0, $t1, iguales
    
         # Mostrar mensaje informativo de que los números no son iguales
         li $v0, 4
         la $a0, msgn
         syscall
         j fin

iguales: #  Mostrar mensaje informativo de que los números son iguales
         li $v0, 4
         la $a0, msge
         syscall
         
 fin:
El ejemplo es muy simple:

  • Solicitamos al usuario que introduzca un número y lo almacenamos en el registro temporal $t0.
  • Solicitamos al usuario que introduzca un segundo número y lo almacenamos en el registro temporal $t1.
  • Utilizamos la instrucción beq para saltar a una etiqueta si los números son iguales y e imprimir un mensaje informando de que lo son.
  • Si no se cumple la igualdad, no se realizará el salto, y, por tanto se ejecutará la siguiente instrucción en secuencia. Éste será el lugar donde mostraremos el mensaje informativo de que los números no son iguales. A continuación de las instrucciones que muestran el mensaje informativo introduciremos una instrucción j para saltar al final y evitar que se ejecute el código que muestra el mensaje informando de que los números son iguales.
Be the first to comment

Por favor acceder para comentar.