当我从程序中调用汇编代码而不是主程序时,为什么会出现堆栈溢出?

时间:2015-06-22 23:26:16

标签: assembly x86 x86-16

以下是代码问题:

push 5
call Factorial

当我从主要这样打电话时:

main PROC
    push 5
    call Factorial    
    exit
main ENDP

我的代码工作正常,但如果我将其称为:

main PROC
    call Binomial
    exit
main ENDP


Binomial PROC
    push 5
    call Factorial
Binomial ENDP

我在下面的代码中push eax获得了堆栈溢出:

Factorial PROC
    push ebp
    mov ebp,esp
    mov eax,[ebp+8]
    cmp eax,0
    ja L1
    mov eax,1
    jmp L2

    L1:
        dec eax
        push eax
        call Factorial

    ReturnFact:
        mov ebx,[ebp+8]
        mul ebx

    L2:
        pop ebp
        ret 4

Factorial ENDP

我无法弄清楚为什么,但是当我从main调用它时,Factorial过程按原样退出并返回到main,但是当它从Binomial调用时,而不是返回到Binomial,它会返回到Factorial ......我发现很奇怪。我在这里做错了吗?

0 个答案:

没有答案