投稿

3月, 2013の投稿を表示しています

アセンブラでWin32APIを使ってみる(MessageBox編)

RubyやPython、JavaScriptのような高級なプログラミング言語が浸透してだいぶ経ちました。 たくさんの便利なライブラリが整っていますし、少ないコード量で面倒な処理ができるところが魅力的です。 とはいえ、こういった言語ばかり触っていると低水準な言語でゴリゴリと書きたくなってきませんか?ほら、なってきましたね。 そんなわけで、もっとも低水準なプログラミング環境といえるであろう アセンブラでWin32APIを使ったアプリケーション を作ります。 今回使うツールは以下の通り。 NASM (アセンブラ) -  http://sourceforge.net/projects/nasm/ ALINK (リンカ) -  http://alink.sourceforge.net/download.html ちなみに最初はMASMを使おうと思ったのですが、Microsoft純正だけありWin32APIのサポートがしっかりされていてつまらないので、今回はNASMを使って縛りプレイをしてみます。 ALINKは。 上記のALINKのサイトの 「Download my Win32 Import library(win32.lib)」 からALINK用のWin32APIライブラリをダウンロードしておきます。 NASM、ALINK、win32.libは同じフォルダに入れてソースコードと同じフォルダに置きます。 まずはお決まりの Hello world を作ってみます。 ウィンドウ表示をすると複雑になるので、MessageBox関数で表示させることにします。 以下のようなプログラムを test.asm などのファイル名で保存します。 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 ti