Created
April 1, 2024 06:09
-
-
Save andreguerrerosilvera/a1d5e2f4c73c1a5cc0c1482395f26849 to your computer and use it in GitHub Desktop.
Fibonacci
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| .data | |
| prompt: .asciiz "Ingrese un número para generar la serie de Fibonacci: " | |
| result: .asciiz "La serie de Fibonacci es: " | |
| .text | |
| main: | |
| # Solicitar al usuario que ingrese un número | |
| li $v0, 4 # Cargar el servicio de impresión de cadena | |
| la $a0, prompt # Cargar la dirección del mensaje | |
| syscall # Llamar al servicio de impresión | |
| # Leer el número ingresado por el usuario | |
| li $v0, 5 # Cargar el servicio de lectura de entero | |
| syscall # Llamar al servicio | |
| move $s0, $v0 # Almacenar el número ingresado en $s0 | |
| # Calcular y generar la serie de Fibonacci | |
| li $t0, 0 # Inicializar el primer término de la serie (F0) como 0 | |
| li $t1, 1 # Inicializar el segundo término de la serie (F1) como 1 | |
| move $t2, $s0 # Cargar el límite de la serie en $t2 | |
| # Mostrar el primer término de la serie | |
| li $v0, 4 # Cargar el servicio de impresión de cadena | |
| la $a0, result # Cargar la dirección del mensaje | |
| syscall # Llamar al servicio de impresión | |
| li $v0, 1 # Cargar el servicio de impresión de entero | |
| move $a0, $t0 # Cargar el primer término de la serie (F0) | |
| syscall # Llamar al servicio de impresión | |
| # Generar la serie de Fibonacci | |
| loop: | |
| add $t3, $t0, $t1 # Calcular el siguiente término de la serie (F2 = F0 + F1) | |
| li $v0, 1 # Cargar el servicio de impresión de entero | |
| move $a0, $t3 # Cargar el siguiente término de la serie (F2) | |
| syscall # Llamar al servicio de impresión | |
| # Actualizar los términos de la serie para el siguiente cálculo | |
| move $t0, $t1 # Actualizar F0 con el valor de F1 | |
| move $t1, $t3 # Actualizar F1 con el valor de F2 | |
| # Verificar si se alcanzó el límite de la serie | |
| bge $t3, $t2, exit # Si el siguiente término es mayor o igual al límite, salir del bucle | |
| j loop # De lo contrario, continuar generando la serie | |
| exit: | |
| # Salir del programa | |
| li $v0, 10 # Cargar el servicio de salida | |
| syscall # Llamar al servicio de salida |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment