Assembleur 68000 aide pour devoir

ARTHUR32 Messages postés 157 Statut Membre -  
ARTHUR32 Messages postés 157 Statut Membre -
Bonjour,
Je suis étudiant en première année de STI (génie électronique)
J'ai un programme en assembleur à débuger et avec mes recherches et les explications de mon prof, je ne vois pas la solution aux 14 erreurs que compte ce programme :

Le but du programme est de réaliser la fonction suivante pour calculer les nombres de Fibonacci (voir wikipédia) sans utiliser la directive invoke :

int fibonacci(int n){
if(n <= 1 )
return 1;
else
return (fibonacci(n-1)+fibonacci(n-2));
}

Code à corrigé en assembleur:

Fibonacci proc n:DWORD
MOVE eax,n
If: CMP eax,1
JMP else ;si n<=1
MOVE eax,1 ;retourner 1
RESET
else: DEC eax ;n-1
PUSH eax ;n-1 sur la pile
CALLM Fibonacci ;resultat dans eax
ROL ebx ;rectifier la pile et ebx=n-1
DEC ebx ;ebx=n-2
PUSH eax ;sauvegarder eax = Fibonacci(n-1) sur la pile
CALLM Fibonacci ;résultat dans eax=Fibonacci(n-2)
ADD esp,1 ;rectifier la pile
ROR ebx ;ebx = Fibonacci(n-1)
ADD eax,ebx ;eax = Fibonacci(n-2) + Fibonacci(n-1)
RESET
Fibonacci endp

J'ai essayé de faire de mon mieux car j'ai enlevé 5 erreurs (bien pour un débutant)
Pour le programme, merci de ne pas utiliser la fonction invoke (consigne).
Je suis disponible pour répondre a vos questions.

J'utilise IDE68000 demander par la prof
http://www.easy68k.com/

Merci d'avance.

1 réponse

ARTHUR32 Messages postés 157 Statut Membre 3
 
je viens de ma percevoir qu'il faux remplacer eax par D1 et ebx par D2 qui sont les noms de registre en 6800

Mais aprés ces modifie il me reste encore 12 erreurs
0