« Perlでコールバック サブルーチンの引数としてサブルーチンの参照を渡す | トップページ | 独習アセンブラ リスト5-2 »

2007-12-04

独習アセンブラ リスト5-1

独習アセンブラ 翔泳社の第5章のリスト 5-1です。

本文では、org 100hとなっているので、
ジャンプ先が100hですが、
これをLinuxで実験する勇気がないので、
似た事をやってみました。
P.174の定数の定義の項に、
$は式の含まれる行の先頭のアセンブリ位置を表します。
とありますので、$を利用して
アドレスを取得する事ができそうです。


01: section .data
02: 
03: dat     db '@'
04: 
05: section .text
06: global  _start
07: 
08: _start:
09:         push    $
10:         mov     eax, 4
11:         mov     ebx, 1
12:         mov     ecx, dat
13:         mov     edx, 1
14:         int     0x80
15:         pop     eax
16:         jmp     eax


これで、似たような事ができていると思います。
@マークを出力する無限ループとなります。
[Ctrl] + [C]キーでプログラムを中断して終了します。

まず、9行目で9行目のアドレスをスタックに積みます。
datを出力後に15行目で
スタック上の9行目のアドレスをeaxに取得します。
16行目で取得したアドレスにジャンプします。




|

« Perlでコールバック サブルーチンの引数としてサブルーチンの参照を渡す | トップページ | 独習アセンブラ リスト5-2 »

アセンブラ(nasm)」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 独習アセンブラ リスト5-1:

« Perlでコールバック サブルーチンの引数としてサブルーチンの参照を渡す | トップページ | 独習アセンブラ リスト5-2 »