Skip to content

Instantly share code, notes, and snippets.

@andreguerrerosilvera
Created April 1, 2024 06:09
Show Gist options
  • Select an option

  • Save andreguerrerosilvera/a1d5e2f4c73c1a5cc0c1482395f26849 to your computer and use it in GitHub Desktop.

Select an option

Save andreguerrerosilvera/a1d5e2f4c73c1a5cc0c1482395f26849 to your computer and use it in GitHub Desktop.
Fibonacci
.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