それでは、いよいよ使ってみましょう。最初の例は、ポトペタです(笑)。
1.WinASM Studio. を起動し、ツールバーのNew Project をクリックします。
2.図のようなダイアログが開きます。Dialogタブをクリックします。
3.今回は、bones を選び、OKをクリック。
4.プロジェクトを保存するフォルダを選択するダイアログが開くので、選択します。
5.Explorer窓で、リソースファイルをクリックします。
6.ダイアログエディタが表示されます。いわゆるポトペタです。フォームをドラッグして形や大きさを整えます。ボタンも右下に移動しておきます。そのあと、ToolBoxでEditを選びます。
7.フォーム上をマウスでドラッグしてEditを貼り付け、位置と大きさを整えます。Editの中の文字が邪魔ですね。まずこれを消しちゃいましょう。
8.Explorer窓の最下部のResourcesタブをクリックします。
9.Explorer窓でEditに相当するIDを選びます。
10.Text欄をクリックして、右半分の文字を変えられるようにします。BackSpaceキーで空欄にしてしまいます。
11.次は、Editの属性を設定します。Style欄をクリックすると、右端にボタンが出現します。これをクリック。
12.設定ダイアログが開きます。関係する多くの項目が羅列されます。当該行をクリックするたびにYes/Noが切り替わりますので、好みの設定に変えます。
13.このままでは文字化けするので、ダイアログフォームのIDを選択して、設定に移ります。
14.Font欄をクリックして、設定ダイアログを出します。
15.おなじみのフォント選択ダイアログですね。日本語フォントにしておきましょう。
16.ツールバーのGo All ボタンをクリック。するとアセンブル・リンクが行われ、エラーがなければ完成した実行ファイルが起動します。
17.完成品を試しに使ってみます。右クリックすると、おなじみのコンテキストメニューも使えます。
以上で完成です。この段階までに、1文字も自分でソースを書いていないことに注目してください。作成した実行ファイルのサイズは5KBに過ぎません。まあこのままでは、ファイルの読み書きもできないわけですが、興味のある方は、さらに機能追加してみてください。チュートリアルの33章が参考になるでしょう。
生成されたソースを眺めてみると、CのSDKと大差ないんですよね。bones.asmを見てみましょう。
.386 .model flat, stdcall option casemap :none include bones.inc .code start: invoke GetModuleHandle,NULL mov hInstance, eax invoke InitCommonControls invoke DialogBoxParam,hInstance,IDD_MAIN,0,offset DlgProc,0 invoke ExitProcess,eax DlgProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD mov eax,uMsg .if eax == WM_INITDIALOG invoke LoadIcon,hInstance,200 invoke SendMessage,hWin,WM_SETICON,1,eax .elseif eax == WM_COMMAND mov eax,wParam .if eax == IDB_EXIT invoke SendMessage,hWin,WM_CLOSE,0,0 .endif .elseif eax == WM_CLOSE invoke EndDialog,hWin,0 .endif xor eax,eax ret DlgProc endp end start
レジスタはeaxしか使っていないです。関数の返す値を受け取ったりするのに使われています。アセンブラ特有のニーモニックもmovだけですね。ちなみにmov A ,B はBをAにコピーするって言う意味です(笑)。初めて見た人でも想像が付くレベルですよね。あとはあえて言えば、xor eax,eax がアセンブラらしい使い方かも。これはeaxを0にしたいときに使います。
bones.inc も bones.rc も特に難しくなさそうです。え、bones.rc のソースが出ない? ツールバーのVisual Mode On/Off で切り替えれば、ソース表示にできます。RCファイルは、Cの場合とまったく共通ですね。ということは、C開発用のリソースエディタとしても、WinASM
Studio.は使えます。別ページで紹介したReloなんかと違って、メニューエディタも付いています。
<次のページ>