私は、このディレクティブが何をしているのか知っています。私が知っているように、プログラムローダーはこのディレクティブを認識しないので、アセンブラーはどのように処理しますか?
3 に答える
アセンブル時のカレントアドレスを100hに設定します。それだけです。簡単な課題。
詳細:
このディレクティブは、結果イメージ内で次の命令が配置される場所を制御するのではなく、メモリにロードされた後に命令が配置される場所を制御します。
「org <100h>」は、アドレスを評価するためのランタイム情報を使用してコンパイラに指示します。これは、バイナリ イメージがオフセットと共にロードされるためです (コンテキストで PSP などに使用される可能性のある最初の 100h バイト)。
これは、同じセグメント内の任意のデータにアクセスする場合 (通常は DS=CS の場合、特に「CS 以外は何も知らない」場合の com ファイルに当てはまります)、またはまれに絶対オフセットに JMP を実行する場合に役立ちます。
言い換えれば、セグメント内のそれ以降のすべてのラベルを、特定のオフセットから説明するようにします。それだけです。
ほとんどのプログラムは、Windows にロードされたときに 100 から開始していました。したがって、org 100h を作成すると、実行時にコンパイラに 100 から開始するデータを格納するように指示されます。つまり、60h または 70h を使用すると、コンパイラはデータのエラーを生成します。データは 60 に存在する可能性があります。またはあなたの指定された場所