我正在尝试学习汇编(MASM x64)并编写了一个简单的代码。
.code
main proc
mov rax, 1
mov rcx, 2
mov rdx, 0
div rcx
ret 0
main endp
end
现在我开始了一个调试过程以查看它是否有效(因为没有其他方法可以检查某些东西是否有效)并且在 div rcx 行,调试器开始将我一直拖到一些名为 exe_common.inl、file_mode.cpp 的文件中,回到 exe_common.inl、matherr.cpp,再回到 exe_common.inl、utility.cpp,再回到 exe_common.inl(这些是什么???????)。此时,有一段预处理器代码
#ifdef _RTC
_RTC_Initialize();
atexit(_RTC_Terminate);
#endif
在 _RTC_Initialize(); (第二行),程序关闭,消息 initsect.cpp not found。这到底是什么意思???Stackoverflow 显示关于“initsect.cpp not found”的辉煌 0 结果,谷歌也没有帮助。显然,当带有 ret 的行试图执行时,总是会发生同样的事情。我在 ret 之后擦除了 0,擦除了 main proc 和 main endp 之间的所有内容,并擦除了 ret 行。总是一样。这发生在 main endp 之前的行尝试执行时,无论它是什么。它甚至发生在世界上最简单的代码中:
.code
main proc
ret 0
main endp
end
我正在使用 microsoft visual studio 2019 和 AMD x64-x86 CPU。