они загружают программу. Значение регистра
они загружают программу. Значение регистра SP устанавливается так,
чтобы он указывал на последнюю доступную в сегменте ячейку памяти.
Таким образом программа занимает начало, а стек - конец сегмента.
В головной метке файла типа .EXE задаются значения регистров
CS, IP, SS и SP. Значения регистров DS и ES DOS устанавливает таким
образом, чтобы они указывали на тот сегмент, в который загружается
программа. Регистр CS указывает на сегмент, который был
идентифицирован как сегмент содержащий стартовый адрес программы.
Если в файле типа .COM программа должна иметь начальное смещение в
сегменте команд равным 100H, то в программном файле типа .EXE
начальный адрес может иметь другое значение. Как показано ниже,
значение этого адреса может содержаться в операторе END:
END START_LOCATION
Это является указанием ассемблеру-редактору связей, что после
загрузки программы управление следует передать на метку
START_LOCATION.
В обоих типах файлов используется программный префикс PSP,
который образуют первые 100H байтов того сегмента, куда загружается
программа. В этой области памяти хранится специальная информация, о
которой говорилось при рассмотрении программы, приведенной на
Фиг. 5.6. В случае файла типа .EXE регистры DS и ES указывают на
эту область данных, тогда как значения регистров CS и SS
устанавливаются на соответствующих этапах
ассемблирования-редактирования связей. В случае файла типа .COM все
регистры указывают на PSP. Это обеспечивает обоим типам файлов
непосредственный доступ к информации, хранящейся в порядке
программного сегмента.
Преимущества файла типа .COM состоит в том, что в этом случае
регистр CS указывает на PSP, а в файле типа .EXE - нет. Прерывания
20H и 27H, связанные с завершением выполнения программы и передачей
управления DOS, требуют, чтобы во время прерывания регистр указывал
на PSP. В случае файла типа .EXE это осуществить сложно. К
Содержание Назад Вперед