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 : 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
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
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 ) !