Assembler для начинающих



         

Файлы .com и .exe - часть 3


    они загружают программу. Значение регистра 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 это осуществить сложно. К



Содержание  Назад  Вперед