Подтвердить что ты не робот

Что делает инструкция по сборке ORG?

может ли кто-нибудь дать мне подробное описание директивы ORG?
Когда и почему он используется в письменных приложениях сборки?

Использование Nasm на x86 или AMD64.

4b9b3361

Ответ 1

ORG используется для установки счетчика местоположения ассемблера. Это может или не может быть переведено на адрес загрузки во время соединения. Он может использоваться для определения абсолютных адресов, например. при определении чего-то вроде векторов прерываний, которые могут нуждаться в фиксированном адресе, или его можно использовать для введения дополнения или создания определенного выравнивания для следующего кода.

Ответ 2

ORG - это просто указание на то, где поставить следующий фрагмент кода/данных, относящийся к текущему сегменту.

Использовать его для фиксированных адресов бесполезно, поскольку конечный адрес зависит от сегмента, который не известен во время сборки.

Ответ 3

      During the assemble time ORG directive resets the MLC (memory location counter) to the address specified in the ORG directive.

Синтаксис: ORG     note: может быть абсолютное значение без знака или любой символ или символ +.

example: - чтобы наблюдать за этой инструкцией, вам понадобится сборка, в которой используется директива 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 '(~ x'A4' + 240 в десятичной форме). в основном эта настройка настраивает таблицу длиной 256 и с 240-го места для хранения некоторых символьных констант, чтобы я мог использовать ее для инструкции TR.

Ответ 4

его местоположение в памяти, куда вы хотите загрузить двоичную программу, если таковая имеется.

Я предпочитаю не использовать org и просто выставляю прямое опкод/​​значение для аппаратного обеспечения. вы всегда можете хранить значения в ax и передавать между bx, cx, dx.

Я пишу свой собственный ассемблер, чтобы вымыть опкод/​​значение, не беспокоясь о его отправке в память перед выполнением,

Его гораздо быстрее просто выполнить коды операций на месте, пока они читаются, вместо того, чтобы пытаться кэшировать их в память, рискуя перегрузить стек, который может сжечь ваш процессор