独習アセンブラ リスト4-3
独習アセンブラ 翔泳社の第四章のリスト 4-3です。
XCHG命令で、ソースとディスティネーションの内容を交換します。
XCHG命令で、ソースとディスティネーションの内容を交換します。
01: section .data
02:
03: msg db 'Hello, assembler', 0x0a
04: len equ $ - msg
05:
06: section .text
07: global _start
08:
09: _start:
10: mov dl, [msg]
11: xchg dl, [msg + 1]
12: mov [msg], dl
13:
14: mov eax, 4
15: mov ebx, 1
16: mov ecx, msg
17: mov edx, len
18: int 0x80
19:
20: mov eax, 1
21: mov ebx, 0
22: int 0x80
02:
03: msg db 'Hello, assembler', 0x0a
04: len equ $ - msg
05:
06: section .text
07: global _start
08:
09: _start:
10: mov dl, [msg]
11: xchg dl, [msg + 1]
12: mov [msg], dl
13:
14: mov eax, 4
15: mov ebx, 1
16: mov ecx, msg
17: mov edx, len
18: int 0x80
19:
20: mov eax, 1
21: mov ebx, 0
22: int 0x80
10行目でdlの内容が'H'となります。
続いて11行目でdlの内容が'e'(msg + 1)
msg + 1の内容が'H'になります。
この時点でメモリ上のmsgは、
HHllo, assembler\n
となっている筈です。
12行目で、'H'([msg])にdlの内容'e'を移動するので、
メモリ上のmsgは、
eHllo, assembler\n
となりました。
あとは、出力するだけです。
続いて11行目でdlの内容が'e'(msg + 1)
msg + 1の内容が'H'になります。
この時点でメモリ上のmsgは、
HHllo, assembler\n
となっている筈です。
12行目で、'H'([msg])にdlの内容'e'を移動するので、
メモリ上のmsgは、
eHllo, assembler\n
となりました。
あとは、出力するだけです。
| 固定リンク
「アセンブラ(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)
この記事へのコメントは終了しました。
コメント