Ассемблер и программирование для IBM PC



       

ГЛАВА 18. Дисковая память IV: Функции BIOS - часть 4


Ассемблер для IBM PC. Глава 18. 4

2. Программа расчитывает каждый дисковый адрес. После каж дого чтения происходит увеличение номера сектора. При достижении номера сектора 10 процедура C10ADDR сбрасывает это значение в 01. Если номер стороны = 1, программа увеличивает номер дорожки; затем меняется номер стороны: 0 на 1 и 1 на 0. 3. Область CURADR содержит начальные значения номеров дорожки и сектора (их программа увеличивает), а область ENDADR - конечные значения. Один из способов улучшения программы - предоставить пользователю возможность указать начальные и конечные номера дорожки и сектора с помощью соответствующего запроса.

Выполните данную программу под управлением отладчика DEBUG. Проделайте трассировку команд, которые инициализируют сегментные регистры, и установите начальный и конечный номера секторов для файловой таблицы FAT (расположение таблицы FAT различно в разных версиях операционной системы). Используя команду G (до) для выполнения ввода с диска и проверки считанного содержимого таблицы FAT и элементов оглавления.

------------------------------------------------------------ ------------------------------------------------------------ Рис.18.1. Использование BIOS для чтения дискового файла.

В качестве альтернативы,отладчику DEBUG можно преобразо вать ASCII-символы в области ввода в их шест. эквиваленты и выдать на экран эти значения, как это делает отладчик DEBUG (см. программу на рис.14.5). Таким образом можно проверить содержимое любого сектора (в том числе "спрятанного"), а также предоставить пользователю возможность внести измене ния и записать измененный сектор на диск. Следует помнить, что при создании файла DOS может вносить записи на любые доступные сектора, которые не обязательно будут смежными на диске. Следовательно, с помощью команды BIOS INT 13H нельзя выполнить последовательное чтение файла.

ОСНОВНЫЕ ПОЛОЖЕНИЯ НА ПАМЯТЬ ------------------------------------------------------------ - Команда BIOS INT 13 обеспечивает прямой доступ к дорожкам и секторам диска. - Команда BIOS INT 13 не поддерживает операции с оглавле нием, обнаружение конца файла, блокирование и деблокиро вание записей. - Верификация сектора выполняет элементарную проверку записанных данных, что приводит к увеличению времени обработки. - Проверяйте байт состояния после каждой дисковой операции через BIOS.

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ------------------------------------------------------------

Ассемблер для IBM PC. Глава 18. 5

18.1. Напишите команды для сброса дискового контролера. 18.2. Напишите команды для чтения байта состояния дискеты. 18.3. Напишите команды для BIOS INT 13H, выполняющие чтение одного сектора в область памяти INDISK, с дисковода A, головки 0, дорожки 6 и сектора 3. 18.4. Напишите команды для BIOS INT 13H, выполняющие запись трех секторов из области памяти OUTDISK, на дисковод B, головку 0, дорожку 8 и сектор 1. 18.5. При записи данных в вопросе 18.4, как можно распоз нать попытку записи на защищенный диск? 18.6. На основе вопроса 18.4 напишите команды контроля записи (операция верификации).

Ассемблер для IBM PC. Глава 19 1




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