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