Assembleur 68000 aide pour devoir

Fermé
ARTHUR32 Messages postés 152 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 10 avril 2015 - 29 mars 2009 à 13:35
ARTHUR32 Messages postés 152 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 10 avril 2015 - 29 mars 2009 à 18:12
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 152 Date d'inscription mercredi 23 mai 2007 Statut Membre Dernière intervention 10 avril 2015 3
29 mars 2009 à 18:12
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