どんなものかな?
(1999/05/15 [土])
さてとりあえず簡単なプログラムを作成して、どんなもんかを見てみましょう。これはマニュアルを適当に見て作ったのでもっと簡単な方法があるかもしれません。
これをアセンブル&リンクすると、なんと 2,582 バイトという小さな実行ファイルサイズができます。そしてこれを実行すると、Hello world のダイアログが現れます。
なお、エクスプローラなどから実行したときに、ウィンドウが出てくるのがいやな人には、リンカのオプション '-subsys con'(コンソールアプリケーション) を '-subsys gui'(GUIアプリケーション) に変更するとウィンドウが出なくなります。
[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