Récursive de Fibonacci en Assemblée

Je suis d'essayer de mettre en œuvre un appel récursif de Fibonacci programme à l'Assemblée. Cependant, mon programme plante, avec une exception non gérée, et je n'arrive pas à choisir le problème. Je ne doute pas que cela implique de mon utilisation incorrecte de la pile, mais je n'arrive pas à un point où...

.386
.model Flat
public Fibonacci
include iosmacros.inc ;includes macros for outputting to the screen

.code
Fibonacci proc

MOV EAX, [EBP+8]
CMP EAX, 1
    JA Recurse
    MOV ECX, 1
    JMP exit

Recurse:
    DEC EAX
    MOV EDX, EAX
    PUSH EAX
    CALL Fibonacci
    ADD ESP, 4
    MOV EBX, ECX
    DEC EDX
    PUSH EDX
    CALL Fibonacci
    ADD ECX, EBX
exit:
ret
Fibonacci endp


.data


end

Aussi, j'ai poussé à le nombre que j'utilise pour obtenir la valeur de Fibonacci de la pile dans une procédure externe. Toute idée d'où le problème pourrait se situer?

OriginalL'auteur muttley91 | 2011-04-11