ORGディレクティブについての包括的な説明を誰か教えてもらえますか?
アセンブリで記述されたアプリケーションでいつ、なぜ使用されるのですか?
x86 または AMD64 で Nasm を使用する。
ORG は、アセンブラのロケーション カウンタを設定するために使用されます。これは、リンク時にロード アドレスに変換される場合と変換されない場合があります。絶対アドレスを定義するために使用できます。たとえば、固定アドレスにある必要がある割り込みベクトルなどを定義する場合や、パディングを導入したり、次のコードの特定のアライメントを生成したりするために使用できます。
During the assemble time ORG directive resets the MLC (memory location counter) to the address specified in the ORG directive.
構文: ORG 注: 符号なしの絶対値または任意の記号または記号 + です。
例: - この命令の動作を観察するには、ORG ディレクティブを使用するアセンブル リストが必要です。
ロケーション
0000A4 00 89 TAB DC 256AL1(*-TAB)
0001A4 00000194 90 ORG TAB+240
000194 F0F1F2F3F4F5F6F7 91 DC C'1234567'
上記では、TAB 記号が MLC アドレス 0A4 に割り当てられています。次の命令で、ORG は MLC を TAB+240 アドレス位置に設定します。これは x'194' (10 進数で ~ x'A4' + 240) です。基本的に、このセットアップは、長さ 256 のテーブルをセットアップし、240 番目の場所からいくつかの文字定数を格納して、TR 命令に使用できるようにします。
もしあれば、バイナリプログラムをロードしたいメモリ内の場所です。
私は組織を使用しないことを好み、ハードウェアに直接オペコード/値を発行します。いつでも ax に値を格納し、bx、cx、dx 間で転送できます。
実行前に最初にメモリに送信することを心配することなく、オペコード/値を分配する独自のアセンブラを作成しています。
オペコードをメモリにキャッシュしてスタックを過負荷にしてCPUを焼き尽くす危険を冒すよりも、読み取られているその場でオペコードを実行する方がはるかに高速です。