seclan のほえほえルーム

| |

・どんなものかな? (1999/05/15 [])
 さてとりあえず簡単なプログラムを作成して、どんなもんかを見てみましょう。これはマニュアルを適当に見て作ったのでもっと簡単な方法があるかもしれません。

test.asm
[extern MessageBoxA]            ;外部に MessageBoxA があることを宣言する
%define MB_OK  dword 0          ;MB_OK を dword 0 で置き換え指示
%define NULL   dword 0          ;NULL を dword 0 で置き換え指示
[section .text]                 ;プログラムのコードセクションの開始宣言
[bits 32]                       ;32bit モードであることを宣言
..start:                        ;プログラムの開始位置を宣言(特別な名前)
    ;int WINAPI WinMain(HINSTANE,HINSTANE,LPSTR,int)
    push    MB_OK               ;
    push    dword mestitle      ;タイトル ASCIIZ 文字列へのポインタ
    push    dword mes           ;メッセージ ASCIIZ 文字列へのポインタ
    push    NULL                ;HWND: ウィンドウハンドル
    call    MessageBoxA         ;MessageBox(NULL, mes, mestitle, MB_OK);
    ret     4*4                 ;終了する
mestitle:   db  'Information',0 ;MessageBox で表示するタイトル
mes:        db  "Hello world",0 ;MessageBox で表示するメッセージ

 これをアセンブル&リンクすると、なんと 2,582 バイトという小さな実行ファイルサイズができます。そしてこれを実行すると、Hello world のダイアログが現れます。
 なお、エクスプローラなどから実行したときに、ウィンドウが出てくるのがいやな人には、リンカのオプション '-subsys con'(コンソールアプリケーション) を '-subsys gui'(GUIアプリケーション) に変更するとウィンドウが出なくなります。


by seclan


| |

 

配信

6.76 msec