Diferencia entre revisiones de «Fibonacci.fma»

De Wiki Asqueados
Saltar a: navegación, buscar
(Algoritmo)
()
 
(No se muestran 35 ediciones intermedias de otro usuario)
Línea 3: Línea 3:
 
Calcula la sucesión de Fibonacci.
 
Calcula la sucesión de Fibonacci.
  
yMfACh  <a href="http://norayqufkbkk.com/">norayqufkbkk</a>, [url=http://zmvtnhicwnhk.com/]zmvtnhicwnhk[/url], [link=http://rjeiceqkzexk.com/]rjeiceqkzexk[/link], http://zlnvcwjtmtwn.com/
+
== Código ==
  
yGw8FK <a href="http://sdjxijmqmvcr.com/">sdjxijmqmvcr</a>, [url=http://deujofbakdgc.com/]deujofbakdgc[/url], [link=http://egwkolkpbtfp.com/]egwkolkpbtfp[/link], http://pymbnstothvb.com/
+
 
 +
  <nowiki>
 +
LDI 1,1    ; 0 constante 1
 +
LDI 300,2 ; 2 contador A
 +
LDI 301,3  ; 4 contador B
 +
LDI 302,C  ; 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
 +
JGE D,C,E
 +
 
 +
LDI CACA,B
 +
ST B,C
 +
</nowiki>
 +
 
 +
== 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 actual del 03:24 22 ene 2009

Programa de prueba de las instrucciones aritméticas.

Calcula la sucesión de Fibonacci.

Código

 
LDI 1,1    ; 0 constante 1
LDI 300,2  ; 2 contador A
LDI 301,3  ; 4 contador B
LDI 302,C  ; 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
JGE D,C,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