segfault с рекурсивным факториалом в сборке fasm
Я получаю segfault с моим кодом, используя сборку fasm. Я пытался сделать факториальную функцию с помощью рекурсии. Я хочу посоветовать мой код и, возможно, пример факториальной функции в FASM
format PE console
entry _start
include 'win32a.inc'
section '.data' data readable writable
p: db 'pause > null', 0
entry_message: db 'entrer le nombre n pour calculer la fonction euler totient: ', 10, 0
n: dd ?
num: db 'number %d', 10, 0
section '.code' readable writable
_start:
start:
push 4
call _fact
add esp, 4
push 0
call [ExitProcess]
_fact:
push ebp
mov ebp, esp
mov eax,[ebp+8]
cmp eax, 1
je _end
dec eax
push eax
call _fact
mov ebx, [ebp+8]
mul ebx
_end:
mov ebp, esp
pop ebp
ret
section '.idata' import data readable
library kernel32, 'kernel32.dll', \
msvcrt, 'msvcrt.dll'
import kernel32, \
ExitProcess, 'ExitProcess' \
import msvcrt, \
printf, 'printf', \
system, 'system'
Я не могу дать вам больше подробностей, потому что для меня это должно сработать, но, очевидно, я где-то допустил ошибку. Кстати, я могу посоветовать отладку FAMM на Windows?
Большое спасибо за вашу помощь!