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



       

ГЛАВА 17. Дисковая память III: Расширенные функции DOS - часть 8


Попробуйте выполнить эту программу в отладчике DEBUG. При каждом вводе с диска просмотрите содержимое области ввода и обратите внимание на то, как DOS форматирует записи. Для улучшения данной программы организуйте вывод на экран запроса для указания пользователем имени и типа файла.

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

ДРУГИЕ ДИСКОВЫЕ ФУНКЦИИ В РАСШИРЕННОЙ ВЕРСИИ DOS ------------------------------------------------------------ Получение размера свободного дискового пространства: шест.36 Данная функция выдает информацию о дисковой памяти. Для выполнения функции необходимо загрузить в регистр DL номер дисковода (0 - текущий дисковод, 1 - A, 2 - B и т.д.):

MOV AH,36H ; Запрос на MOV DL,0 ; текущий дисковод INT 21H ; Вызов DOS

При указании неправильного номера дисковода операция воз вращает в регистре AX шест.FFFF, иначе следующие значения:

в AX число секторов на кластер в BX число доступных кластеров в CX число байтов на сектор в DX общее число кластеров на дисководе В версии DOS младше 2.0 для получения информации о диско вой памяти следует использовать функцию шест.1B (получить информацию из табблицы FAT).

Удаление файла: шест.41 Для удаления файлов из программы (за исключением файлов с атрибутом "только чтение") используется функция шест.41. При этом в регистре DX необходимо загрузить ASCIIZ строку, содержащую путь доступа и имя файла:

MOV AH,41H ; Запрос на удаление LEA DX,PATHNAM ; ASCIIZ-строка INT 21H ; Вызов DOS

В случае ошибки в регистре AX возвращается код 02 (файл не найден) или 05 (нет доступа).

Управление файловым указателем: шест.42 Система DOS имеет файловый указатель, который при открытии файла устанавливается в 0 и увеличивается на 1 при последовательных операциях записи или считывания. Для доступа к любым записям внутри файла можно менять файловый указатель с помощью функции шест.42, получая в результате прямой доступ к записям файла. Для установки файлового указателя необходимо поместить в регистр BX файловый номер и в регистровую пару CX:DX требуе мое смещение в байтах. Для смещений до 65.535 в регистре CX устанавливается 0, а в DX - смещение. В регистре AL должен быть установлен один из кодов, который определяет точку отсчета смещения:




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