TARGET = naskhelo
[FORMAT "WCOFF"] [INSTRSET "i486p"] [OPTIMIZE 1] [BITS 32] [FILE "naskhelo.nas"] ; 以上6行はおまじない。COFFモード、486命令利用可能、最適化ON、32bitモード、ソースファイル名。 [SECTION .text] GLOBAL _OsaskMain _OsaskMain: MOV EBX,func_init CALL 0xc7:0 MOV EBX,func_openwin CALL 0xc7:0 MOV EBX,func_titlebox CALL 0xc7:0 MOV EBX,func_settitle CALL 0xc7:0 MOV EBX,func_sleep CALL 0xc7:0 ; 永久スリープなので帰ってこない [SECTION .data] ALIGNB 4 func_init: DD 0x0004, work, 0x0000 ; ファンクション番号0x04(API初期化), ワークエリアのポインタ, 終了ファンクション番号0x00 func_openwin: DD 0x0020, window, 0x0200, 18 * 8, 3 * 16, 0x0000 ; ファンクション番号0x20(ウィンドウオープン), window構造体のポインタ, スロット番号0x200, xサイズ(ドット単位), yサイズ(ドット単位), ; 終了ファンクション番号0x00 func_titlebox: DD 0x0028, 0x1000, wintitle, 0, 8, 1, 0, 0, window, 0x00c0, 0, 0x0000 ; ファンクション番号0x28(テキストボックスオープン), オプション0x1000(ウィンドウタイトルモード), textbox構造体のポインタ, 背景色0, ; xサイズ(キャラクタ単位), yサイズ(キャラクタ単位), 表示x位置0, 表示y位置0, window構造体のポインタ, ; 標準キャラクタセット使用(0x00c0), リザーブ0, 終了ファンクション番号0x00 func_settitle: DD 0x0040, 0x1000, 0, 0, wintitle, 0, 0, 0, 8, "naskhelo", 0x0000 ; ファクション番号0x40(テキスト表示), オプション0x1000(8bitキャラクタモード), 表示x位置0, 表示y位置0, textbox構造体のポインタ, ; 文字色0, 背景色0, キャラクタコードオフセット0, 文字数8, 文字列"naskhelo", 終了ファンクション番号0x00 func_sleep: DD 0x0018, 0x0001, 0, 0, 0x0000 ; ファンクション番号0x0018(シグナル関係の処理), オプション1(スリープ), パラメータ0, パラメータ0, 終了ファンクション番号0x00 ALIGNB 16 ; 本当はalign8で十分(ただの気分で16にしてしまった) work: RESB 256 ; func_initに必要な256バイトのワークエリア window: RESB 128 ; ウィンドウ構造体 wintitle: RESB 64 ; テキストボックス構造体 RESB 8 * 1 * 8 ; 8文字分
MOV EBX,func_init
MOV EBX,[func_init]
PUSH 0 PUSH work PUSH 4 MOV EBX,ESP CALL 0xc7:0 ADD ESP,12
(This host) = http://osask.net