1) .com ファイルは開始する最も簡単な場所であり、dosbox で実行されます。基本的に、プログラムはファイル内のオフセット 0x100 のような場所から開始されます。最初の 0x100 は何でもよいと思いますが、覚えていません。
2) 多くの場合、最初のプログラムは手動で作成され、マシン コードにアセンブルされますが、これは、2 つの数値を追加してそれらをメモリに保存し、残りの 1 日を休むことができることを意味します。ビデオ カードに出力する "hello world" プログラムは、はるかに複雑です。dos システム コールを使用して非常に単純なものを作成できるようになりました。
3) 2 に基づいて、1960 年代または 1970 年代にさかのぼってテストするための一度に 1 つまたはいくつかの命令よりも複雑なものはすべて、プログラムを手動で組み立てる場合でも、プログラムをアセンブラーで手動で記述し、それを機械語にアセンブルします。それをロードします。基本的に、最初にアセンブリ言語を学び、それからマシンコードを生成する方法を学び、それらのバイトを 16 進エディタに入力し始めます。当時は 1960 年代ではありません。極度の苦痛を味わわない限り、上記のことを asm で書き、アセンブラを使用してマシン コードを生成し、逆アセンブラを使用して逆アセンブルし、アセンブリ言語とマシン コードを並べて調べて大幅に改善しない限り、1960 年代ではありません。動作するプログラムを取得するのにかかる時間。オペレーティング システムや命令セットが登場する前にチップ会社で働いていた場合、マシンコードの作成方法と配置方法を理解するために、チームの他のメンバー、チップ設計者などを引き続き利用します。高レベルの言語経験だけで、成功を期待して自分ですべてを行うことはできません。
4) x86 はひどい命令セットです。アセンブリを知らない場合は、最初にアセンブリを学ばないことを強くお勧めします。x86 を持っているということは、最初に x86 を学ぶための最悪の言い訳です。あなたはすでに dosbox について言及したので、すでにエミュレート/シミュレートを計画しているので、適切な命令セットを使用してシミュレートするか、そのハードウェアを購入します (50 ドル未満でも 20 ドル未満でも、はるかに優れた命令セットを備えたボードを購入できます)。購入する場合は、最初にハードウェアと並行してシミュレート/エミュレートすることをお勧めします。本当に教育が必要な場合は、独自のシミュレーターを作成することはまったく難しくありません。おそらく、独自の命令セットを発明してください。
5) これは、コンパイラが何をするかを理解するのに役立ちません。アセンブリ言語を知ってからコンパイラの出力を逆アセンブルすることが、その知識への最善の道です。機械語は関係なく、実際にプログラムを実行する必要はありません。コンパイラは、高水準言語から低水準言語に移行します (たとえば、C から asm または C++ から asm)。次に、アセンブラが何をするかを理解してください。歴史とその他の理由により、さまざまな解決策があります。今日の典型的な解決策は、別個のコンパイラ、アセンブラ、およびリンカです (コンパイラは、指示しない限り、アセンブラとリンカを呼び出します。3 つのステップは表示されません。実際、コンパイル プロセスは複数のプログラムである可能性があります。を実行してそのタスクを完了します)。バイナリを出力するアセンブラは、プログラム全体を解決する必要があります。オブジェクトに出力するアセンブラは、リンカが埋めるために機械語コードに穴を残します。リンカがバイナリに物を配置し、スペーシング/アドレス指定を知るまで、エンコードできない別のオブジェクトの分岐やアイテムの呼び出しなどです。他のオブジェクトに存在する変数にもアクセスします。
プログラムの 16 進編集に関する実際の例を見ない可能性があります。最初は非常に広範な質問であり、単純な答えがないためです (どのオペレーティング システム、どのシステムが呼び出すのか、またはそれらを作成するのか、どのファイル形式、どの 16 進エディタなど) )。また、これは高レベルの質問と問題であるため、実際の質問は、アセンブリをどこで学ぶか、アセンブリとマシン コードの関係をどこで学ぶか、システム コール (アセンブリの問題ではなく、 asm の学習とは関係ありません。アセンブリ言語自体を学習し、高等言語を使用してシステム コールを直接実行できない場合は、システム コールを実行するためのツールとして使用することを学びます)、.com などの実行可能ファイル形式についてはどこで学習しますか.exe、coff、elf など。xyz オペレーティング システムまたは環境で実行される 16 進エディタ。これらの質問を個別に尋ねると、回答と例が見つかります。これらの回答が得られたら、マシンコードを入力する 16 進エディターを使用してプログラムを作成する方法がわかります。短い例としては、SO に投稿されたプログラムの逆アセンブルを見ると、完全なプログラムの 16 進の例が表示されます。そのうちのいくつかは 16 進で示される完全なプログラムです。ファイル形式がわかっている場合は、そのファイルを 16 進エディタに入力するだけです。それらのいくつかは、16 進数で示される完全なプログラムです。ファイル形式がわかっている場合は、そのファイルを 16 進エディタに入力するだけです。それらのいくつかは、16 進数で示される完全なプログラムです。ファイル形式がわかっている場合は、そのファイルを 16 進エディタに入力するだけです。