nasm+alinkでMessageBoxAを動かしてみる実験

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を呼び出して終了処理をしています。

タイトルとURLをコピーしました