Необработанное исключение в 0x00428252 в assignment_3.exe: 0xC0000005: место записи нарушения прав доступа 0x00000004

Я использую 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 ответов

Другие вопросы по тегам