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



         

ГЛАВА 16. Дисковая память II: Функции базовой версиии DOS - часть 16


Получение текущего номера дисковода: шест.19 Функция DOS шест.19 позволяет определить текущий номер дисковода:

MOV AH,19H ; Получить текущий дисковод INT 21H ; Вызов DOS

Операция возвращает шест. номер дисковода в регистре AL (0=A, 1=B и т.д.). Полученное значение можно поместить непосредственно в FCB для доступа к файлу с текущего диско вода. Кроме перечисленных существуют функции для получения информации из таблицы FAT (1B и 10), установки поля прямой записи (24), установки вектора прерываний (25), создания нового программного сегмента (26) и анализа имени файла (29). Эти функции описаны в техническом руководстве по DOS.

ПРОГРАММА: ВЫБОРОЧНОЕ УДАЛЕНИЕ ФАЙЛОВ ------------------------------------------------------------ На рис.16.5 приведена COM-программа по имени SDEL, иллюстрирующая функции DOS 11H, 12H и 13H для удаления выб ранных файлов. Для запроса на удаление файлов пользователь может ввести,например, следующие команды:

SDEL *.* (все файлы) SDEL *.BAK (все BAK-файлы) SDEL TEST.* (все файлы по имени TEST)

Посредством DOS программа определяет в оглавлении элемен ты, удовлетворяющие запросу. DOS заносит полное имя найден ного элемента в PSP (префикс программного сегмента) по смеще нию шест.81 (DTA по умолчанию). Затем программа выводит на экран имя файла и запрос подтверждения. Ответ Y (да) разре шает удаление, N (нет) сохраняет файл, а Return завершает выполнение.

Ассемблер для IBM PC. Глава 16. 17

Обратите внимание на то, что данная программа должна быть создана как COM-программа, так как EXE-программа требуют отличной адресации для использования смещений шест.5С и 81 в PSP. Для тестирования программы используйте скопированные временно файлы. ------------------------------------------------------------ ------------------------------------------------------------ Рис.16.5. Выборочное удаление файлов.

ОСНОВНЫЕ ПОЛОЖЕНИЯ НА ПАМЯТЬ ------------------------------------------------------------ - Программа, использующая INT 21H в базовой версии DOS для операций ввода-вывода на диск, должна содержать блок управления файлом (FCB) для каждого доступного файла. - Один блок содержит 128 записей. Номер текущего блока и номер текущей записи в FCB указывают на дисковую запись, которая должна быть обработана. - В обратной последовательности байт в FCB записываются следующие элементы: номер текущего блока, размер записи, размер файла и относительный номер записи. - Все программы, обрабатывающие один и тот же файл, должны иметь одинаково описанный блок FCB. - Область ввода-вывода (DTA) определяется адресом памяти, куда должна быть помещена запись при чтении или откуда она заносится на диск. Прежде, чем выполнить операцию записи или чтения, в программе необходимо установить каждую область DTA. - Операция открытия файла устанавливает в блоке FCB значе ния для следующих элементов: имя файла, тип файла, размер запи си (шест.80), размер файла и дата. Программа должна заменить размер записей на правильное значение. - Программа, использующая для записи файла операцию DOS INT 21H, должна закрыть файл в конце обработки для того, чтобы поместить на диск все оставшиеся в буфере записи (если таковые имеются) и скорректировать соответствующий элемент оглавления. - При использовании для чтения и записи операции DOS INT 21H система автоматически изменяет текущий номер записи в FCB. - Операция чтения по прерыванию DOS INT 21H проверяет наличие требуемой записи сначала в буфере и при отсутствии выполняет чтение с диска. - Прямой метод доступа требует указания номера записи в поле относительного номера записи блока FCB. - Восемь байт (двойное слово) относительного номера записи кодируются в обратной последовательности байт. - Если требуемая запись при прямом доступе уже находится в буфере, то система передает ее непосредственно в DTA. В противном случае выполняется чтение с диска в буфер всего сектора, содержащего необходимую запись. - Операции прямого блочного чтения и записи более эффек тивны при наличии достаточной памяти. Эти операции особенно удобны для загрузки таблиц.




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