IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Ma réponse est-elle juste ? (nasm, pgcd , programme récursif, assembleur)


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre du Club
    Profil pro
    developpeur
    Inscrit en
    Juin 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Juin 2009
    Messages : 57
    Points : 67
    Points
    67
    Par défaut Ma réponse est-elle juste ? (nasm, pgcd , programme récursif, assembleur)
    bonjour

    je matin j'avais un contrôle en architecture et assembleur

    je veux savoir est ce que j'ai bien répondu

    l'exercice

    ecrire un programme récursif nasm qui initialise deux variables a et b de type byte resoectivement à 12 et 8 , ces valeurs sont initialisées dans le segment de donnée, puis calcule leur plus grand diviseur commun dans le registre al selon la fonction C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int pgcd(int a, int b) {
    int r;
    r=a%b
    if(r==0) 
    return b;
    else 
    return pgcd(b,r);
    }
    ma réponse
    lors de l'assemblage j'ai Error de segmantation
    mais ma solution je pense qu'elle est exacte !!!!
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    %include "asm_io.inc"
     
    segment  .data
     
     
    a: db 12
    b: db 8
     
     
     
     
     
     
    segment .text		   	 
    	global main 
     
    main:   
     
    enter 0,0  
     
    mov eax,0
     
    push eax 
    mov ax,[b]
    push eax
    mov ax,[a]
    push eax
     
    call pgcd
    add esp,8
     
    call print_int
     
     
     
    leave 
    ret
     
     
     
     
     
     
     
     
    pgcd:
     
    push ebp
    mov ebp,esp 
    sub esp,4
     
    mov edx,0
    mov eax,0
     
    mov ebx,[ebp+12]
    mov eax,[ebp+8]
     
    div ebx
    mov [ebp-4],edx
     
     
    cmp dword [ebp-4],0
    JE stop
    jmp aa
     
    aa:
    push ebx
    push dword [ebp-4]
    call pgcd
    add esp,8
    jmp fin
     
     
     
     
     
     
     
     
    stop:
    mov eax,ebx
     
    fin:
     
    mov esp,ebp
    pop ebp
    ret
    merci beaucoup

  2. #2
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Bonjour,

    A mon avis, le problème pourrait venir du nettoyage de la pile après l'appel de ta fonction (ça dépend si ta fonction adopte la convention __cdecl ou en __stdcall).

    Bref, essaie de le retirer (et sinon, utilise un débuggeur pour savoir ce qui se passe réellement, ça aide pas mal ).
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

Discussions similaires

  1. Réponses: 254
    Dernier message: 29/12/2011, 15h31
  2. Réponses: 83
    Dernier message: 17/10/2011, 14h02
  3. Réponses: 1
    Dernier message: 31/07/2010, 18h33
  4. Réponses: 10
    Dernier message: 19/09/2007, 11h46
  5. Réponses: 4
    Dernier message: 23/04/2007, 22h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo