[assembleur] PGCD

Résolu
b_khallou Messages postés 322 Date d'inscription   Statut Membre Dernière intervention   -  
 gasty -
salut à tous ,
je cherche un code en assembleur qui prend en parametre 2 entier et retourne leur PGCD ,
merci,
Configuration: Windows XP
Firefox 2.0.0.14

3 réponses

  1. mounk
     
    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
  2. b_khallou Messages postés 322 Date d'inscription   Statut Membre Dernière intervention   34
     
    ca marche je vous remerci.
    0
    1. mounk
       
      mais de rien man....
      0