我对汇编语言比较陌生。我找到了很多教程来解释如何使用 ML64 和 MASM32 创建 HelloWorld 应用程序,但没有一个详细解释程序。例如,看看下面的示例,我在网上找到并编译(64 位):
main proc
sub rsp, 68h ; space for 4 arguments + 16byte aligned stack
xor r9d, r9d ; 4. argument: r9d = uType = 0
lea r8, [caption] ; 3. argument: r8 = caption
lea rdx, [text] ; 2. argument: edx = window text
xor rcx, rcx ; 1. argument: rcx = hWnd = NULL
call MessageBoxA
xor ecx, ecx ; ecx = exit code
call ExitProcess
main endp
end
我可以通过这个。我知道有通用寄存器和段寄存器,但你如何决定使用哪个。例如,为什么 'r8' 包含标题而不是 r9?是否有 WinAPI 的程序集参考?我意识到这是一个基本问题。我选择了 MASM32 标签,因为这是一个带有 64 位示例的一般问题。