Я относительно новичок в языке ассемблера. Я нашел очень много руководств, в которых объясняется, как создать приложение HelloWorld с использованием ML64 и MASM32, но ни в одном из них программа не описана подробно. Например, взгляните на приведенный ниже пример, который я нашел в Интернете и скомпилировал (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-битным примером.