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 :
Lorsque que j'analyse l'exécution du programme avec gdb -> je retrouve le message
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Program received signal SIGFPE, Arithmetic exception. pgcd () at pgcd.s:19 19 idiv %ebx
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 ) !
Partager