|
Если программа содержит лишь одну абсолютную ссыл-
ку, то такая программа называется программой, имеющей абсолютную
адресацию, или неперемещаемая. Ее нельзя перемещать в памяти.
Внимательные читатели могут подумать о том, что допущена
ошибка. |
avast 4 professional edition |
|
|
В конце концов точка входа в программу макроассемблера
(MASM) указывается как far (далекий) - и все. Выполнимые програм-
мы с расширением .EXE загружают регистры DS и ES по инструкции
MOV - переслать. |
антивирус панда |
|
{img3} |
avast 4 professional edition |
|
Оба этих факта, как кажется, подразумевают непе-
реместимую программу, но операционная система MS-DOS выполняет
загрузку программы в память по различным адресам как требуется.
Ключом к этой дилемме является то, что используемые значения не
являются константами в MS-DOS. Макроассемблер MASM и компоновщик
LINK обращаются с именами сегментов и именем процедуры far (дале-
кий) специальным способом обработки, который называется
relocation map (схема настройки). |
1с бухгалтерия |
|
|
архиватор rar, операционная система windows, перевод с английского на русский, файловый менеджер, операционные системы windows, .
avast home
|
Код, использующий этот тип
ссылок, рассматривается еще как переместимый, пока обновляются
регистры сегмента для отражения позиции программного кода.
Абсолютная адресация
Абсолютная адресация выполняется в тех случаях, когда явно
указывается адрес физической памяти. Для выполнения абсолютной
адресации в семействе микропроцессоров 8086 необходимо явно ука-
зать адрес сегмента и смещение. Эта ссылка каждый раз указывает
на одну и ту же ячейку памяти. Абсолютная адресация в микропро-
цессоре 8086 используется редко. Только несколько инструкций мик-
ропроцессора 8086 имеют способность генерировать абсолютные адре-
са. Этими инструкциями являются : внутрисегментные (далекие)
инструкции JMP - безусловный переход и CALL - вызов процедуры, а
также инструкции LDS и LES (загрузка указателя, используя DS или
ES). Инструкции JMP и CALL (непосредственные или косвенные) об-
новляют не только смещение (указатель инструкции), но и регистр
сегмента кода (CS). Он указывает физический адрес памяти. В свою
очередь, инструкции LDS и LES не только загружают смещение в 16-
битовый регистр, но и загружают либо регистр сегмента данных
(DS), либо регистр дополнительного сегмента (ES). Опять это физи-
ческий адрес памяти.
Другим способом создания абсолютного адреса является исполь-
зование инструкции MOV - пересылка и POP - извлечь из стека для
непосредственной загрузки константы в один из регистров сегмента.
Заметим однако, что значение, пересылаемое с помощью инструкции
POP в регистр CS, в процессорах iAPX186, iAPX188, или iAPX286 не-
допустимо и не должно выполняться, если только по причине совмес-
тимости.
Типы программного кода
При обсуждении свойств программы рассматривался тип сложности
ее адресации.
|
|
|