独習アセンブラ リスト5-2
独習アセンブラ 翔泳社の第5章のリスト 5-2です。
まず、初めに'A'をスタックに積み、
このスタックのアドレスをecxに移動します。
このecxを介して、
スタック上の値をインクリメントして、
出力してみます。
まず、初めに'A'をスタックに積み、
このスタックのアドレスをecxに移動します。
このecxを介して、
スタック上の値をインクリメントして、
出力してみます。
01: section .text
02: global _start
03:
04: _start:
05: push 'A'
06: mov ebx, 1
07: mov ecx, esp
08: mov edx, 1
09: dispchr:
10: mov eax, 4
11: int 0x80
12: inc byte [ecx]
13: cmp byte [ecx], 'Z' + 1
14: jnz dispchr
15:
16: pop eax
17:
18: mov eax, 1
19: mov ebx, 0
20: int 0x80
02: global _start
03:
04: _start:
05: push 'A'
06: mov ebx, 1
07: mov ecx, esp
08: mov edx, 1
09: dispchr:
10: mov eax, 4
11: int 0x80
12: inc byte [ecx]
13: cmp byte [ecx], 'Z' + 1
14: jnz dispchr
15:
16: pop eax
17:
18: mov eax, 1
19: mov ebx, 0
20: int 0x80
5行目でスタックに'A'を積みます。
7行目ecxに'A'のスタック上のアドレスを移動します。
11行目で出力し、
12行目でecxの指すアドレスに格納されている値を
インクリメントします。
ecxはスタックのトップを指していて、
スタックのトップには'A'が格納されていたので、
これをインクリメントする事で、
スタックのトップの値が'B'となります。
14行目でdispchrにジャンプしなかった場合に
スタックからポップしてプログラムを終了します。
7行目ecxに'A'のスタック上のアドレスを移動します。
11行目で出力し、
12行目でecxの指すアドレスに格納されている値を
インクリメントします。
ecxはスタックのトップを指していて、
スタックのトップには'A'が格納されていたので、
これをインクリメントする事で、
スタックのトップの値が'B'となります。
14行目でdispchrにジャンプしなかった場合に
スタックからポップしてプログラムを終了します。
| 固定リンク
| コメント (0)
| トラックバック (0)