アセンブリ言語を学習しようとしていますが、各コマンドの目的を理解するのに助けが必要です。以下は、それらが使用されるプログラムです。
push %ebp
mov %esp,%ebp
sub $0x10,%esp
mov 0x8(%ebp),%eax
add $0x1,%eax
mov %eax,-0x4(%ebp)
mov -0x4(%ebp),%eax
leave
ret
非常に基本的なアセンブリ言語入門書:
まず、アセンブリ言語は特定のプロセッサ(CPU)またはプロセッサファミリに関連していることを知っておく必要があります。たとえば、質問に示されているスニペットは、Intelx86アーキテクチャ用のようです。非常に多くのアセンブリ言語命令がCPUのレジスタの内容に基づいて、またはそれに基づいて作用するため、これは重要です。したがって、個々の命令の詳細を詳しく調べる前に、CPUのアーキテクチャ、つまり使用可能なレジスタの名前と特性、およびそれらの役割について理解する必要があります(これらのレジスタの一部は本質的に一般的ですが、他のレジスタは非常に特殊な役割を持っています)。また、アーキテクチャの一部は、外部メモリ位置に対処する方法です。
第二に、アセンブリ言語命令の種類はごくわずかです。
第三に、物事をより複雑にすることがある(しかし、アセンブリロジックを非常に強力にする)のは、アドレッシングモードです。基本的にアドレッシングモードは、特定の命令に使用されるメモリ位置を決定するために使用されます。アドレッシングモードの例は直接および間接であり、前者は命令のオペランドとして直接読み取り/書き込みを行うアドレスを提供し、後者はメモリアドレスオペランドも提供しますが、読み取り/書き込みに使用される実効アドレスが取得されます。最初に提供されたアドレスの内容を読み取り、その内容を操作が行われるべきアドレスとして使用します。
上記の基本的な理解があれば、おそらくプロセッサの取扱説明書を読み始めて、すべてをより理解することができます。
たぶん、次のウィキペディアのエントリから始めてください。
そして多分この8ページの入門コースノート(pdf)のようなドキュメント
最後の注意点:コードを直接見て、それが何をするのかを理解しようとすることは、アセンブリ言語を理解するための非常に効果的な方法です。ただし、(ペーストビンへの)元の投稿は逆アセンブラを参照していることに注意しました。逆アセンブラが混乱して(たとえば、コードが含まれているのと同じようにデータの領域を処理する場合)、非常に意味のない命令リストを生成する場合があることに注意してください。また、実際のソースコード(逆アセンブルによって生成されたソース)を読むことで、作成者のコメントと、ロジックを理解するのに役立つ適切なラベル名の恩恵を受けることができます。
これはあなたの目的にとってかなり良い本です:
すばやく検索すると、x86アセンブリ言語の次のリファレンスが得られました
なぜアセンブリ言語を学びたいのかは別の問題です!