我使用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'
我无法提供更多详细信息,因为对我来说应该可以,但是很明显,我在某个地方犯了错误。 顺便问一下,我可以对Windows上的fasm调试提出一些建议吗?
非常感谢您的帮助!