独習アセンブラ リスト4-4
独習アセンブラ 翔泳社の第四章のリスト 4-4です。
スタックは通常、先に積んだ物の上に
後から積む物が、上に載せられるイメージなので、
当然上の物を取り出さない限り、
下の物を取り出す事は出来ませんので、
先に積んだ物は、後から取り出す事になります。
この順序を意図的に変更する事で、
レジスタ内の値を交換します。
スタックは通常、先に積んだ物の上に
後から積む物が、上に載せられるイメージなので、
当然上の物を取り出さない限り、
下の物を取り出す事は出来ませんので、
先に積んだ物は、後から取り出す事になります。
この順序を意図的に変更する事で、
レジスタ内の値を交換します。
01: section .text
02: global _start
03:
04: _start:
05: push 0x31
06:
07: mov edx, 4
08: mov eax, 1
09:
10: push edx
11: push eax
12:
13: pop edx
14: pop eax
15:
16: mov ebx, 1
17: mov ecx, esp
18: int 0x80
19:
20: pop eax
21:
22: mov eax, 1
23: mov ebx, 0
24: int 0x80
02: global _start
03:
04: _start:
05: push 0x31
06:
07: mov edx, 4
08: mov eax, 1
09:
10: push edx
11: push eax
12:
13: pop edx
14: pop eax
15:
16: mov ebx, 1
17: mov ecx, esp
18: int 0x80
19:
20: pop eax
21:
22: mov eax, 1
23: mov ebx, 0
24: int 0x80
Linuxのシステムコールでは、
eaxに4
edxには、出力するバイト数を指定しますが、
ここでは、これを逆にします。
eax = 1
edx = 4
と指定します。
これを一度スタックに積み、
逆の順序で取り出すことで、
eaxとedxの内容を交換します。
5行目と20行目のpushとpopは、
出力される文字 '1' ( 0x31 )です。
eaxに4
edxには、出力するバイト数を指定しますが、
ここでは、これを逆にします。
eax = 1
edx = 4
と指定します。
これを一度スタックに積み、
逆の順序で取り出すことで、
eaxとedxの内容を交換します。
5行目と20行目のpushとpopは、
出力される文字 '1' ( 0x31 )です。
| 固定リンク
「アセンブラ(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)
この記事へのコメントは終了しました。
コメント