Diferencia entre revisiones de «Fibonacci.fma»

De Wiki Asqueados
Saltar a: navegación, buscar
()
Línea 33: Línea 33:
  
 
== Algoritmo ==
 
== Algoritmo ==
 +
 +
Cargamos 1 en A y en B. El registro 2 llevará la posición de A, el 3 la de B y el registro C la posición de escritura. En cada iteración se suma A y B, se guarda el resultado en C se incrementan los "punteros" 2, 3 y C, y se vuelven a cargar los valores de A y B.
 +
 +
En seudocódigo:
 +
 +
  <nowiki>
 +
A=1
 +
B=1
 +
[2]=A
 +
[3]=B
 +
salto:
 +
B=A+B
 +
[C]=B
 +
2++
 +
3++
 +
C++
 +
A=[2]
 +
B=[3]
 +
si C<D goto salto
 +
</nowiki>

Revisión del 12:14 22 dic 2005

Programa de prueba de las instrucciones aritméticas.

Calcula la sucesión de Fibonacci.

Código

 
LDI 1,1    ; 0 constante 1
LDI 300,C  ; 2 contador A
LDI 301,D  ; 4 contador B
LDI 302,D  ; 6 contador de escritura
LDI 400,D  ; 8 límite

LD 1,A   ; A
LD 1,B
ST A,2
ST B,3

ADD A,B  ;E
ST B,C
ADD 1,2
ADD 1,3
ADD 1,C
LD 2,A
LD 3,B
CMP D,C
JGE E

LDI CACA,B
ST B,C

Algoritmo

Cargamos 1 en A y en B. El registro 2 llevará la posición de A, el 3 la de B y el registro C la posición de escritura. En cada iteración se suma A y B, se guarda el resultado en C se incrementan los "punteros" 2, 3 y C, y se vuelven a cargar los valores de A y B.

En seudocódigo:

 
A=1
B=1
[2]=A
[3]=B
salto:
B=A+B
[C]=B
2++
3++
C++
A=[2]
B=[3]
si C<D goto salto