assignment_3.exe中0x00428252处的未处理异常:0xC0000005:访问冲突写入位置0x00000004

时间:2012-12-02 08:30:13

标签: visual-studio-2010 access-violation unhandled-exception

我正在使用VS2010,我从“mov dword ptr [edx],eax”这一行中得到标题中的错误。这是一个简单的程序,它使用递归来查找阶乘,并调用一个单独的函数阶乘来获得输入的阶乘。我正在使用输入5进行测试,“call factorial”返回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

0 个答案:

没有答案