素人プログラマがアセンブラでHello worldに挑戦してみた。


(環境はUbuntu9.10 32bitです。)

アセンブラ処理系NASMをインストールする

sourceforgeのサイトから、処理系(コンパイラ?)のソースコードをダウンロードできます。

$ wget "http://sourceforge.net/projects/nasm/files/nasm%20sources/2.07/nasm-2.07.tar.gz/download"
$ tar xvfz nasm-2.07.tar.gz
$ cd nasm-2.07
$ ./configure
$ make
$ su
# make install

サンプルコードHello World

下記コードを ファイル名hello.asm で保存します。

section .text
            global _start       ;リンカのための宣言

_start:                         ;リンカに開始ポイントを伝える
        mov     edx,len         ;メッセージの長さ
        mov     ecx,msg         ;メッセージ
        mov     ebx,1           ;標準出力を指定
        mov     eax,4           ;システムコール番号 (sys_write)
        int     0x80            ;システムコール

        mov     eax,1           ;システムコール番号 (sys_exit)
        int     0x80            ;システムコール

        section .data

        msg     db      'Hello, world!',0xa       ;メッセージ文字列
        len     equ     $ - msg                  ;文字列の長さ

実行する。

$ nasm -f elf hello.asm && ld -s -o hello hello.o && ./hello

hello, world
できた!!

感動した!!

参考:Linux でアセンブリプログラミング
カテゴリ: