独習アセンブラ リスト1-4
リストの1-3は、1-2と同じような物なので、
ここでは省略します。
次は、リスト1-4です。
add命令が出てきます。
加算です。
サンプルリストでは、1 + 5を行っています。
ここでは省略します。
次は、リスト1-4です。
add命令が出てきます。
加算です。
サンプルリストでは、1 + 5を行っています。
01: section .text
02: global _start
03:
04: _start:
05: mov edx, 1
06: add edx, 5
07: add edx, 0x30
08: push edx
09: mov eax, 4
10: mov ebx, 1
11: mov ecx, esp
12: mov edx, 1
13: int 0x80
14: pop edx
15:
16: mov eax, 1
17: mov ebx, 0
18: int 0x80
02: global _start
03:
04: _start:
05: mov edx, 1
06: add edx, 5
07: add edx, 0x30
08: push edx
09: mov eax, 4
10: mov ebx, 1
11: mov ecx, esp
12: mov edx, 1
13: int 0x80
14: pop edx
15:
16: mov eax, 1
17: mov ebx, 0
18: int 0x80
まず始めに、edxを1にして
6行目、7行目で足し算をしています。
6行目の足し算は単純に5を足します。
これで、1+5の結果がedxの値となります。
7行目の足し算は文字コードの'0'を足しています。
文字コードは、'0', '1', '2', '3', '4'と並んでいます。
つまり、'0'が0x30で0x31は'1'です。
0x36は'6'になります。
数値としての6ではなく、
文字としての'6'です。
この'6'という文字を、リスト1-1と同じように
画面に出力します。
以前やったように
スタックのポインタが指すアドレスを
下のように直接操作しても問題ありません。(多分)
6行目、7行目で足し算をしています。
6行目の足し算は単純に5を足します。
これで、1+5の結果がedxの値となります。
7行目の足し算は文字コードの'0'を足しています。
文字コードは、'0', '1', '2', '3', '4'と並んでいます。
つまり、'0'が0x30で0x31は'1'です。
0x36は'6'になります。
数値としての6ではなく、
文字としての'6'です。
この'6'という文字を、リスト1-1と同じように
画面に出力します。
以前やったように
スタックのポインタが指すアドレスを
下のように直接操作しても問題ありません。(多分)
add esp, 4
| 固定リンク
「アセンブラ(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)
この記事へのコメントは終了しました。
コメント