Diferencia entre revisiones de «Fibonacci.fma»

De Wiki Asqueados
Saltar a: navegación, buscar
()
 
(No se muestran 42 ediciones intermedias de 5 usuarios)
Línea 8: Línea 8:
 
   <nowiki>
 
   <nowiki>
 
LDI 1,1    ; 0 constante 1
 
LDI 1,1    ; 0 constante 1
LDI 300,C ; 2 contador A
+
LDI 300,2 ; 2 contador A
LDI 301,D ; 4 contador B
+
LDI 301,3 ; 4 contador B
LDI 302,D ; 6 contador de escritura
+
LDI 302,C ; 6 contador de escritura
 
LDI 400,D  ; 8 límite
 
LDI 400,D  ; 8 límite
  
Línea 25: Línea 25:
 
LD 2,A
 
LD 2,A
 
LD 3,B
 
LD 3,B
CMP D,C
+
JGE D,C,E
JGE E
 
  
 
LDI CACA,B
 
LDI CACA,B
Línea 33: Línea 32:
  
 
== 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 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