fasm组装中具有递归阶乘的段错误

时间:2019-01-15 00:56:18

标签: recursion assembly x86 factorial fasm

我使用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调试提出一些建议吗?

非常感谢您的帮助!

0 个答案:

没有答案