Иллюстрированный самоучитель по задачам и примерам Assembler

Работа с дисками, каталогами и организация поиска файлов

Задача поиска традиционно является актуальной. При рассмотрении вопроса работы с файлами ее также не обойти. Мы рассмотрим номенклатуру средств, предлагаемых MS DOS для поиска файла и определения его местоположения в древовидной структуре каталогов текущего диска.

Во время работы с предыдущими программами вы заметили, что при задании имен файлов мы практически не указывали имен дисководов и путей к этим файлам. MS DOS имеет средства для установки текущего диска и каталога, в котором выполняются все текущие операции с файлами. При необходимости можно изменить текущий диск и каталог. Ниже приведено несколько функций для работы с текущими диском и каталогом – определение, изменение, получение информации.

Получить номер заданного по умолчанию дисковода

Вход: АН = 19h.

Выход: AL – номер дисковода (00h – A:, 01h – В: и т. д.).

:prg07_14.asm – программа получения номера текущего (по умолчанию) дисковода функцией 19h.
I.code
m;…..Получить номер текущего (по умолчанию) дисковода –
movah.l9h:номер функции DOS
1nt2lh
jc exit – . переход в случае ошибки:в al номер текущего диска

Выбрать заданный по умолчанию диск

Вход: АН = OEh; DL = номер нового диска по умолчанию (00h = A:, 01h = В: и т. д.).

Выход: AL = максимально возможный в данной системе номер дисковода (00h = A:, 01h = В: и т. д.) определяется на основе параметра LASTDRIVE в файле CONFIG.SYS.

Получить информацию о свободном дисковом пространстве

Вход: АН = 36h; DL = номер диска (00h – текущий,01h = А: и т. д.).

Выход: АХ = FFFFh – неправильный номер устройства в DL, иначе: АХ = число секторов в одном кластере; ВХ – число свободных кластеров; СХ = размер сектора (в байтах); DX = общее число кластеров на диске.

Используя информацию, возвращаемую функцией 36h, можно подсчитать как свободное пространство на диске – произведение АХ*ВХ*СХ, так и полный объем диска – произведение AX*CX*DX.

MS DOS предоставляет следующие возможности для манипулирования каталогами: создание и удаление каталога, получение информации о текущем каталоге и его смена.

Создание каталога

Вход: АН = 39h; DS:DX – ASCIZ-строка пути к создаваемому каталогу.

Выход: АХ = не определен (CF ¦ 0); АХ – код ошибки (CF = 1): 3 – несуществующий путь; 5 – доступ запрещен.

Путь к каталогу должен содержать перечисление всех каталогов начиная от корневого на пути к создаваемому каталогу, при этом они, естественно, должны существовать. Последнее имя каталога – имя создаваемого каталога.

;prg07_15.asm – программа демонстрации создания каталога функцией 39h.
.data
dname db "c:\windows\my_diг".0
point_dname dd dname
.code
;…..создадим каталог в каталоге c:\windows…….-…….
Ids пате;формируем указатель на строку с именем нового каталога
movah,39h:номер функции DOS
int 21h
jc exit;переход в случае ошибки
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.