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



         

Сегменты - часть 7


    системе. Кроме того, этот размер может существенно возрастать при
    использовании в DOS прерывания INT 27H, которое заканчивает
    выполнение программы, но оставляет ее резидентной в памяти. При
    этом программный загрузчик DOS должен адресоваться к сегментному
    префиксу PSP той программы, которую он загружает. Проще всего
    задать эту структуру данных с помощью отдельного оператора SEGMENT.
 
      На Фиг. 6.13 показано объявление сегмента, которое можно
    использовать в двух различных местах. Если бы можно было посмотреть
    текст исходной программы для загрузчика DOS, то мы бы обнаружили
    там подобное объявление. В случае программы, использующей структуру
    .EXE, такая сегментация могла бы обеспечить доступ к переменным в
    сегментном префиксе PSP. В приведенном на Фиг. 5.6 примере
    программы с применением функций DOS, использовалась структура файла
    типа .COM. Это позволяло нам обращаться к различным ячейкам
    сегмента PSP через смещение относительно блока PSP. Задача весьма
    облегчалась тем, что DOS загружала программу в тот сегмент, который
    содержал PSP.
      В случае .EXE-файла блок PSP находится не в том же сегменте,
    что и команды программы. Так как при передаче управления программе
    типа .EXE DOS устанавливает регистры DS и ES на сегмент PSP, то
    имеет смысл обращаться с PSP как с отдельным сегментом. Приведенный
    на Фиг. 6.13 фрагмент программы из сегмента CODE, показывает, как
    можно обращаться к данным в блоке PSP.

            Microsoft (R) Macro Assembler Version 5.00                1/1/80 04:03:31
            Фиг. 6.13 Структура Программного Префикса           Page     1-1
 
 
                                          PAGE  ,132
                                          TITLE Фиг. 6.13 Структура Программного Префикса
             0000                   PROGRAM_SEGMENT_PREFIX  SEGMENT
 
             0000  0002[                  INT_20            DB    2 DUP (?)
                      ??



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