-
Notifications
You must be signed in to change notification settings - Fork 0
/
fib.asm
111 lines (56 loc) · 1.57 KB
/
fib.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
## minmax.a - imprime los valores maximos y minimos de un arreglo de
## enteros.
##
## Asume que el arreglo tiene al menos dos elementos (a[0],a[1]).
## Se inicializa como minimo y maximo a[0]
## despues con ayuda de instrucciones de bifurcacion hace un recorrido
## que recorre el arreglo.
##
## t0 - apunta a los elementos del arreglo
## t1 - contiene la cuanta de elementos
## t2 - contiene min
## t3 - contiene max
## t4 - para cada palabra del arreglo en cada iteracion
##
#################################################
# text segment #
#################################################
.text # Aqui empieza el segmento de codigo
.globl __start
__start:
la $a0, ask1
li $v0, 4
syscall
li $v0, 5
syscall
move $t1, $v0 # sale del bucle cuando $t1 es 0
move $t3, $v0 #guardando el numero ingresado
lw $t0,($zero) # inicializa fib de 0 ($t2) con 0
add $t1, $t0, 1 # fib de 1 = 1
loop:
add $t2, $t0, $t1 #se suma y se guarda en $t2
move $t0, ($t1) # t0 = t1
move $t1, ($t2) # incrementa el puntero una palabra
bnez $t1,loop # y continua si contador>0
move $a0, $t3 # cuando termina el bucle imprime respuestas
li $v0,1
syscall
move $a0,$t3
li $v0,1
syscall # imprime el valor del input
move $a0,$t2
li $v0,1
syscall # imprime el fibonacci
la $a0,endl # imprime un salto de linea
li $v0,4
syscall
li $v0,10
syscall # fin del programa...
#################################################
# data segment #
#################################################
.data # Aqui empieza el segmento de datos
#count: .word 15
endl: .asciiz "\n"
##
## fin de archivo