implantation algorithme d'euclide (pgcd ) problème
Salut à tous , je suis débutant en assembleur, et me voila confronté à un problème que je n'arrive pas à résoudre.
En effet j'essaie d'implanter un algorithme qui calcule le pgcd entre 13481754 et 1234715 .
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| .data
a:
.long 13481754
b:
.long 1234715
resultat:
.space 4
.text
.global _start
_start:
pgcd:
movl a,%eax
movl b,%ebx
and %ebx,%ebx
jz done
idiv %ebx
movl b,%eax
movl %eax,a
movl %edx,%ebx
movl %ebx,b
jmp pgcd
done:
movl $1,%eax
movl $0,%ebx
int $0x80 |
Lorsque que j'analyse l'exécution du programme avec gdb -> je retrouve le message
Code:
1 2 3
| Program received signal SIGFPE, Arithmetic exception.
pgcd () at pgcd.s:19
19 idiv %ebx |
Or lorsque que je regarde le contenu de %eax et %ebx avant justement de tomber sur cette erreur il se trouve qu'aucun des deux est nul. Et qu'il suit bien le déroulement de l'algorithme d'euclide que j'essaie d'implanter
c'est à dire tant que (a%b!=0)=> c=b , b=a%b , a=c .
Merci de m'avoir lu :) ! (l'espace resultat servira à stocker la valeur du pgcd je ne l'ai pas encore fait ) !