[assembleur] PGCD

Résolu/Fermé
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 - 12 mai 2008 à 23:29
 gasty - 8 juil. 2008 à 12:11
salut à tous ,
je cherche un code en assembleur qui prend en parametre 2 entier et retourne leur PGCD ,
merci,

3 réponses

slt....
voici le code ke tu demandes... j'espere ke tu sais comment marche les instructions...
bon courage!!


.data
a : .long 10360
b : .long 3470
pgdc : .space 4 /* On reserve 4 octets pour le resultat */

.text
.globl _start

_start :
movl a,%eax /* On met la valeur de a dans le registre %eax */
movl b,%ebx /* On met la valeur de b dans le registre %ebx */
movl $0,%edx /* On met la valeur 0 dans le registre %edx */

debut :
divl %ebx /* on fait la division du couple (%edx,%eax) par %ebx */
movl $0,%ecx /* on met la valeur 0 dans le registre %ecx */
cmp %edx,%ecx /* Le registre %edx contient le reste de la divison, qu'on compare à la valeur contenu dans le registre %ecx */
jnz retour /* si c'est different de 0 on fait un saut au label retour */

jmp fin /* si c'est = 0, on fait un saut au label fin */

retour :
movl %ebx,%eax /* on remet le diviseur dans le registre %eax */
movl %edx,%ebx /* et le reste dans le registre %ebx */
movl $0,%edx /* le registre %edx va prendre la valeur 0 */
jmp top /* et on retourne au label top pour une nouvelle division */


fin :
movl %ebx,pgdc /* a la fin, pgdc va contenir le dernier reste non nul */
movl $1,%eax
movl $0,%ebx
int $0x80



voila, donc j'ai pris les deux entiers, et normalement si tu compile et execute, tu auras pgcd(10360,3470) = 10.
valeur ke tu trouveras en principe dans le registre %ebx, dernier reste non nul!!
essaie avec d'autre valeur.
6
salut j'ai veux les codes en java
1
b_khallou Messages postés 335 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 14 octobre 2011 34
13 mai 2008 à 19:49
ca marche je vous remerci.
0
mais de rien man....
0