jueves, 23 de febrero de 2012

[CÓMPUTO INTEGRADO] Programa MIPS

En esta parte mostraré y explicare el código de un programa en ensamblador de MIPS explicando cada sección del código:

Primero que nada el código:

.data
prompt:     .asciiz "Enter in an integer: "
str1:  .asciiz "the answer is: "
newline:  .asciiz "\n"
bye:  .asciiz "Goodbye!\n"
 .globl main

 .text
main:

 # Inicializando
 li $s0, 10

 # Imprime la linea para captura de datos
 li $v0, 4       # Carga $v0 para imprimir un string 
 la $a0, prompt  # Carga en $a0 la dirección de prompt
 syscall              # Se hace la llamada al sistema

 # Lee el valor
 li $v0, 5       # Carga $v0 para leer un entero
 syscall              # Se hace la llamada al sistema
 move  $s0, $v0     # Mueve el valor de $v0 a $s0


loop:
 # Imprime str1
 li $v0, 4       # Carga $v0 para imprimir un string
 la $a0, str1    # Carga en $a0 la dirección de str1
 syscall           # Se hace la llamada al sistema

 # Imprime el valor del loop
 li $v0, 1  # Carga $v0 para imprimir un entero
 move $a0, $s0 # Mueve $s0 a $a0
 syscall   # Se hace llamada al sistema

 # Imprime el nuevo valor
 li $v0, 4  # Carga $v0 para imprimir un string
 la $a0, newline  # Carga en $a0 la direción de newline
 syscall   # Se hace llamada al sistema

 # Decrementa la variable
 sub $s0, $s0, 1     # Iguala $s0 a $s0 -1
 bgez $s0, loop    # Si $s0 >= 0 regresa a loop, si no, continua.

 # Imprime mensaje de adios
 li $v0, 4  # Carga $v0 para imprimir un string
 la $a0, bye # Carga en $a0 la dirección de bye
 jr  $ra  # Se guardan registros en $ra y sale del programa


1 comentario: