Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скляров И. Изучаем Assembler за 7 дней (2010).pdf
Скачиваний:
1335
Добавлен:
23.02.2015
Размер:
2.11 Mб
Скачать

http://www.sklyaroff.ru

131

CL=атрибуты, которые файлы могут иметь CH=атрибуты, которые файлы должны иметь

Возвращаемые значения:

CF=0, если файл или файлы удалены

CF=1 и AX=код ошибки, если произошла ошибка. Код 7100h означает, что функция не поддерживается.

6.4.4. Поиск файлов

Поиск файлов с короткими именами на диске осуществляется с помощью двух функций: 4Eh (найти первый файл) и 4Fh (найти следующий файл).

Поиск файлов с длинными именами на диске осуществляется тремя функциями: найти первый файл, найти следующий файл, прекратить поиск.

4Eh (INT 21h) — найти первый файл

Входные данные:

AH=4Eh

CX = атрибуты поиска (биты могут комбинироваться): бит 0: только для чтения бит 1: скрытый файл бит 2: системный файл бит 3: метка тома бит 4: директория бит 5: атрибут архива

биты 6-15: все остальные биты не используются

DS:DX=адрес ASCIIZ-строки с именем файла, которое может включать путь и маски для поиска (символы * и ?)

Возвращаемые значения:

CF=0 и область DTA заполняется данными, если файл найден

CF=1 и AX=02h, если файл не найден; 03h, если путь не найден; 12h, если неправильный режим доступа.

4Fh (INT 21h) — найти следующий файл

Входные данные:

AX=4Fh

DTA – содержит данные от предыдущего вызова функции 4Eh и 4Fh.

Возвращаемые значения:

CF=0 и DTA содержит данные о следующем найденном файле, если не произошла ошибка.

CF=1 и AX=код ошибки, если произошла ошибка.

LFN 4Eh (INT 21h) — найти первый файл с длинным именем

Входные данные:

AX=714Eh

CL=атрибуты, которые файл может иметь (биты 0 и 5 игнорируются)

CH= атрибуты, которые файл должен иметь

SI=0: использовать Windows-формат даты/времени

SI=1: использовать DOS-формат даты/времени

http://www.sklyaroff.ru

132

DS:DX=адрес ASCIIZ-строки с маской поиска (может включать * и ?. Для совместимости маска *.* ищет все файлы в директории, а не только файлы содержащие точку в имени)

ES:DI=адрес 318-байтного буфера для информации о файле.

Возвращаемые значения:

CF=0

AX=поисковый идентификатор

CX=Unicode-флаг:

бит 0: длинное имя содержит подчеркивания вместо преобразуемых Unicodeсимволов

бит 1: короткое имя содержит подчеркивания вместо непреобразуемых Unicodeсимволов

CF=1, AX=код ошибки, если произошла ошибка (7100h – функция не поддерживается)

Если файл найден, область данных по адресу ES:DI заполняется следующим образом: 00h: 4 байта – атрибуты файла

биты 0-6: атрибуты файла DOS бит 8: временный файл

04h: 8 байт – время создания файла

0Ch: 8 байт – время последнего доступа к файлу 14h: 8 байт – время последней модификации файла 1Ch: 4 байта – старшее двойное слово длины файла 20h: 4 байта – младшее двойное слово длины файла 24h: 8 байта – зарезервировано

2Ch: 260 байт – ASCIIZ-имя файла длинное 130h: 14 байт – ASCIIZ-имя файла короткое

Дата создания/доступа/модификации записываются в одном из двух форматов, в соответствии со значением SI при вызове функции. Windows-формат – 64-битное число 100-наносекундных интервалов с 1 января 1601 года; если используется DOSформат – в старшее двойное слово записывается DOS-дата, а в младшее – DOSвремя.

LFN 4Fh (INT 21h) — найти следующий файл

Входные данные:

AX=714Fh

BX=поисковый идентификатор (от функции 4Eh)

SI=формат даты/времени

ES:DI=адрес буфера для информации о файле

Возвращаемые значения:

CF=0 и CX=Unicode-флаг; если следующий файл найден

CF=1 и AX=код ошибки, если произошла ошибка (7100h – функция не поддерживается)

LFN A1h (INT 21h) — закончить поиск файла

Входные данные:

AX=7141h

BX=поисковый идентификатор

Возвращаемые значения:

CF=0, если операция выполнена