Visual studio 2010 分配中0x00428252处的未处理异常\u 3.exe:0xC0000005:访问冲突写入位置0x00000004

Visual studio 2010 分配中0x00428252处的未处理异常\u 3.exe:0xC0000005:访问冲突写入位置0x00000004,visual-studio-2010,access-violation,unhandled-exception,Visual Studio 2010,Access Violation,Unhandled Exception,我使用的是VS2010,标题中的错误来自行“mov dword ptr[edx],eax”。这是一个简单的程序,使用递归查找阶乘,并调用单独的函数阶乘来获取输入的阶乘。我用输入5测试它,“callfactorial”返回120(应该是这样),但是当我尝试将它存储回输出时,我得到了错误,我不知道为什么 push ebx push ecx push edx mov ebx, dword ptr[16 + esp] // input mov edx, dwor

我使用的是VS2010,标题中的错误来自行“mov dword ptr[edx],eax”。这是一个简单的程序,使用递归查找阶乘,并调用单独的函数阶乘来获取输入的阶乘。我用输入5测试它,“callfactorial”返回120(应该是这样),但是当我尝试将它存储回输出时,我得到了错误,我不知道为什么

    push ebx
    push ecx
    push edx

    mov ebx, dword ptr[16 + esp] // input
    mov edx, dword ptr[20 + esp] // &output
    mov eax, ebx // copy ecx

    call factorial

    mov dword ptr [edx], eax
    pop edx
    pop ecx
    pop ebx

    ret
阶乘:

    sub ebx, 1 // eax - 1
    cmp ebx, 1 // if eax equals 1 then end of recursion
    je skip
    push ebx

    call factorial
    pop ebx
    skip:
    mul ebx // multiply ebx * eax
    ret

你能提供源代码而不是反汇编吗?