Работа с дисками, каталогами и организация поиска файлов
Задача поиска традиционно является актуальной. При рассмотрении вопроса работы с файлами ее также не обойти. Мы рассмотрим номенклатуру средств, предлагаемых 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;переход в случае ошибки