Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin d'aide pour l'assembleur

    21 octobre 2018 à 15:39:35

    Hey !

    Je suis étudiant en informatique et j'ai eu un cours sur l'assembleur. Cependant il reste une partie qui m'échappe: comment fonctionne la mémoire pendant l’exécution d'un programme. Je suis complètement perdu entre les registres et les instruction push, pop, popa, pusha, etc...

    Voici un code dont le résultat est 49. J'ai beau me casser la tête, je ne comprends pas comment on arrive à ce résultat et surtout, qu'est ce qui se passe dans la mémoire à chaque étape de ce programme:

    SIZE equ 7
    section .data
       vec dd 100,81,64,25,49,16,36
       msg db "Result = ",0
    section .text
    global CMAIN
    CMAIN:
       push vec
       push SIZE
       call func1
       PRINT_STRING msg
       PRINT_DEC 4,eax
       NEWLINE
       mov eax,0
       ret
    ;**************************************************************
    func1:
       enter 0,0 ;*** 1 ***
       mov ecx,[ebp+8]
       mov esi,[ebp+12]
       mov eax,0
       next:mov ebx,[esi]
       push ebx
       call func2
       add eax,ebx
       add esi,4
       loop next
       leave
       ret 8
    ;***************************************************************
    func2:
       enter 0,0
       push eax ;*** 2 ***
       mov ebx,0
       cont:mov eax,ebx
       imul eax
       cmp eax,[ebp+8]
       jg found
       inc ebx
       jmp cont
    found:
       dec ebx
       pop eax
       leave
       ret 4

    En bref, comment fonctionne la pile/le stack ?

    Un petit éclaircissement me permettant de me mettre sur la voie serait le bienvenu car j'ai beau chercher, je n'y arrives pas...

    Merci d'avance !

    -
    Edité par WalkYM 21 octobre 2018 à 15:46:39

    • Partager sur Facebook
    • Partager sur Twitter

    Besoin d'aide pour l'assembleur

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown