最初の 4 つの引数がレジスタ ( RCX
、RDX
、R8
、R9
) にあり、追加の引数がスタックにプッシュされることはわかっています。
質問:
引数をスタックにプッシュする方法は? (push 0) で試してみましたが、うまくいきませんか?
コード( MASM64 )
extrn ExitProcess: PROC
extrn MessageBoxExA: PROC
.data
caption db '64-bit hello!', 0
message db 'Hello World!', 0
.code
Start PROC
sub rsp, 38h
mov rcx, 0 ; hWnd = HWND_DESKTOP
lea rdx, message ; LPCSTR lpText
lea r8, caption ; LPCSTR lpCaption
mov r9d, 0 ; uType = MB_OK
push 0 ; wLanguageId
call MessageBoxExA
mov ecx, eax
add rsp, 38h
call ExitProcess
Start ENDP
End
私はそれを知ってMessageBox
おり、同じように動作しますが、(学習目的で) 1 つのパラメーターを渡す必要があるため、MessageBoxEx
使用しようとしています。MessageBoxEx
私は同様の質問をしたことを知っていますが、これはそうではありませんが、vb.net に関連しています。