На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 2 / Типы программного кода Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Типы программного кода

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


Внимательные читатели могут подумать о том, что допущена ошибка. В конце концов точка входа в программу макроассемблера (MASM) указывается как far (далекий) - и все. Выполнимые программы с расширением .EXE загружают регистры DS и ES по инструкции MOV - переслать. Оба этих факта, как кажется, подразумевают непереместимую программу, но операционная система MS-DOS выполняет загрузку программы в память по различным адресам как требуется. Ключом к этой дилемме является то, что используемые значения не являются константами в MS-DOS. Макроассемблер MASM и компоновщик LINK обращаются с именами сегментов и именем процедуры far (далекий) специальным способом обработки, который называется relocation map (схема настройки). При загрузке программы в память MS-DOS читает схему настройки и изменяет значения тех ссылок, которые содержат адреса сегментов. Для программистов важно заметить, что MS-DOS не расширяет это правило для стандартных значений данных, и загрузка одного из регистров сегмента константой это не то же самое, что использование имени сегмента или имени процедуры far (далекий).


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz