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


         

Загрузка в верхнюю часть памяти - часть 12


    ванную память содержимое сектора 2 дорожки 0 загрузочной дискеты.
    Как поместить драйвер устройства в сектор 2 будет описано при
    размещении программы загрузки в секторе 1.
 
      После чтения процедуры драйвера устройства, подпрограмма
    инициализации изменяет вектор прерывания BIOS дискеты BIOS (INT
    13H), чтобы он указывал на новый драйвер устройства. Как и в
    предыдущем примере, эта процедура сохраняет старый вектор. Новому
    драйверу этот вектор нужен чтобы при необходимости считывать данные
    с настоящей дискеты, а не с ее модели. Наконец, наша программа
    загружает систему. Она предлагает пользователю вставить системную
    дискету, ждет утвердительного ответа и считывает запись загрузки.
    (Если бы процедура предварительно не произвела пересылку программы,
    то сейчас она была бы испорчена). Если все идет нормально, то
    процедура осуществляет переход по первому адресу записи загрузки, в
    результате чего управление получает стандартная операционная
    система.
 
      Прежде чем двинуться дальше, рассмотрим, как поместить
    процедуру загрузки на новую загрузочную дискету. Во-первых,
    необходима пустая отформатированная дискета. Она и станет
    загрузочной. Листинг на Фиг. 10.3 показывает, что ассемблирование и
    редактирование связей процедуры загрузки происходят, как обычно.
    Вызовите программу DOS DEBUG и загрузите процедуру инициации.
    Она загружается со смещением 7C00H, установленным программой DEBUG.
    Регистры устанавливаются таким образом, чтобы использовать BIOS для
    записи одного сектора дискеты.  Это выполняет трехбайтовая
    программа, находящаяся по адресу 200H.  Если после записи нет
    состояния ошибки, то запись инициализации уже на дискете.
 
      Для записи драйвера устройства в сектор 2 выполните следующие
    шаги, показанные на Фиг. 10.3.  С помощью программы DEBUG мы
    загружаем в память драйвер псевдодиска. Команда записи программы
    DEBUG помещает код драйвера в сектор с относительным номером 1



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