アセンブリ言語について。
>2進数の羅列では人間にはあまりに読み書きしにくいからです。
>それを命令単位に区切って、英単語を元にした名前を与えたのが、
>アセンブリ言語です。 ニーモニックとは、その命令の名前の事です。
簡潔に要点がまとまっている、すばらしい説明ですね。その通りです。
これで理解できないなら、追加の説明のしようがありません。
(なお、このように、他人の発言は引用符を付けて引用すると、わかりやすくなります。是非そうしてください。)
まあ具体例を挙げるならこんな感じ。
(機械語データ) (アセンブリ言語)
b8 57 61 6b 61 mov $0x616b6157,%eax
53 push %ebx
50 push %eax
ba 04 00 00 00 mov $0x4,%edx
bb 01 00 00 00 mov $0x1,%ebx
b8 04 00 00 00 mov $0x4,%eax
89 e1 mov %esp,%ecx
cd 80 int $0x80
58 pop %eax
31 c0 xor %eax,%eax
5b pop %ebx
c3 ret
人間がCPUを直接動かすプログラムを書こうとするとき、アセンブリ言語を使って書きます(右側の部分)。
mov $0x616b6157,%eax
push %ebx
push %eax
mov $0x4,%edx
mov $0x1,%ebx
mov $0x4,%eax
mov %esp,%ecx
int $0x80
pop %eax
xor %eax,%eax
pop %ebx
ret
そしてこれをアセンブルすると、1対1対応した機械語のデータ列が出来ます。
それが
b8 57 61 6b 61
53
50
ba 04 00 00 00
bb 01 00 00 00
b8 04 00 00 00
89 e1
cd 80
58
31 c0
5b
c3
この部分。
機械語には改行なんてありませんから、実際は一連の
b8 57 61 6b 61 53 50 ba 04 00 00 00 bb 01 00 00 00 b8
04 00 00 00 89 e1 cd 80 58 31 c0 5b c3
と言うデータ列になります。
これをCPUが実行していきます。
相当熟練した人で無ければ、このデータ列を見るだけでプログラム構造を理解する、というわけに行きません。
なので、人間が機械語レベルでプログラミングする際には、アセンブリ言語を使います。
※この回答のプログラムはこちらから引用しました。
>31バイトでつくるアセンブラプログラミング アセンブラ短歌の世界
>https://book.mynavi.jp/support/pc/4946/c01_assembra.pdf
で、機械語データは、なぜ、0と 1だけではないのでしょうか?教えていただけないでしょうか?すみません。
お礼
ありがとうございます 参考にさせていただきました