Assembler - язык неограниченных возможностей


Поиск файлов


Найти нужный файл на диске намного сложнее, чем просто открыть его, — для этого требуются две функции при работе с короткими именами (найти первый файл и найти следующий файл) и три — при работе с длинными именами в DOS 7.0 (найти первый файл, найти следующий файл, прекратить поиск).


Функция DOS 4Eh — Найти первый файл

Ввод: АН = 4Eh
AL используется при обращении к функции APPEND
СХ = атрибуты, которые должен иметь файл (биты 0 (только для чтения) и 5 (архивный бит) игнорируются, если бит 3 (метка тома) установлен, все остальные биты игнорируются)
DS:DX = адрес ASCIZ-строки с именем файла, которое может включать путь и маски для поиска (символы * и ?)
Вывод: CF = 0 и область DTA заполняется данными, если файл найден
CF = 1 и АХ = 02h, если файл не найден, 03h — если путь не найден, 12h — если неправильный режим доступа


Вызов этой функции заполняет данными область памяти DTA (область передачи данных), которая начинается по умолчанию со смещения 0080h от начала блока данных PSP (при запуске СОМ- и ЕХЕ-программ сегменты DS и ES содержат сегментный адрес начала PSP), но ее можно переопределить с помощью функции 1Ah.


Функция DOS 1Ah — Установить область DTA

Ввод: АН = 1Ah
DS:DX = адрес начала DTA (128-байтный буфер)


Функции поиска файлов заполняют DTA следующим образом:

    +00h: байт — биты 0 – 6: ASCII-код буквы диска; бит 7: диск сетевой

    +01h: 11 байт — маска поиска (без пути)

    +0СН: байт — атрибуты для поиска

    +0Dh: слово — порядковый номер файла в каталоге

    +0Fh: слово — номер кластера начала внешнего каталога

    +11h: 4 байта — зарезервировано

    +15h: байт — атрибут найденного файла

    +16h: слово — время создания файла в формате DOS:

    биты 15 – 11: час (0 — 23)

    биты 10 – 5: минута

    биты 4 – 0: номер секунды, деленный на 2 (0 – 30)




    Начало  Назад  Вперед