独習アセンブラ リスト5-1
独習アセンブラ 翔泳社の第5章のリスト 5-1です。
本文では、org 100hとなっているので、
ジャンプ先が100hですが、
これをLinuxで実験する勇気がないので、
似た事をやってみました。
P.174の定数の定義の項に、
$は式の含まれる行の先頭のアセンブリ位置を表します。
とありますので、$を利用して
アドレスを取得する事ができそうです。
本文では、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
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行目で取得したアドレスにジャンプします。
@マークを出力する無限ループとなります。
[Ctrl] + [C]キーでプログラムを中断して終了します。
まず、9行目で9行目のアドレスをスタックに積みます。
datを出力後に15行目で
スタック上の9行目のアドレスをeaxに取得します。
16行目で取得したアドレスにジャンプします。
| 固定リンク
「アセンブラ(nasm)」カテゴリの記事
- 独習アセンブラ リスト5-2(2007.12.04)
- 独習アセンブラ リスト5-1(2007.12.04)
- 独習アセンブラ リスト4-4(2007.11.15)
- 独習アセンブラ リスト4-3(2007.11.15)
- 独習アセンブラ リスト4-2(2007.11.12)
コメント