nasm+alinkでMessageBoxAをとりあえず動かしてみました。
・環境
Microsoft Windows [Version 10.0.22621.521]
""
Caption OSArchitecture
Microsoft Windows 11 Pro 64-bit
Name
AMD Ryzen 5 3500 6-Core Processor
NASM version 2.15.05 compiled on Aug 28 2020
ALINK v1.6
32bitアプリ
bits 32
extern MessageBoxA
extern ExitProcess
section .text
global winmain
winmain:
push dword 0
push dword title
push dword string
push dword 0
call MessageBoxA
push dword 0
call ExitProcess
ret
section .data
title: db 'Test', 0
string: db 'Hello world!', 0
バッチファイル
W:\SOFT\NASM\nasm.exe test.asm -fwin32
W:\SOFT\ALINK\alink.exe test.obj win32.lib -oPE -entry winmain
@cmd /k
これを実行ファイルにすると「Hello world!」メッセージが出てきました。
MessageBoxA
int MessageBoxA(
[in, optional] HWND hWnd,
[in, optional] LPCSTR lpText,
[in, optional] LPCSTR lpCaption,
[in] UINT uType
);
MessageBoxA function (winuser.h) – Win32 apps | Microsoft Learn
MessageBoxAはこの逆順にPUSHされています。
最後は、ExitProcessを呼び出して終了処理をしています。