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


Поиск файлов - часть 3


    биты 0 – 6: атрибуты файла DOS

    бит 8: временный файл

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

+0Ch: 8 байт — время последнего доступа к файлу

+14h: 8 байт — время последней модификации файла

+1Ch: 4 байта — старшее двойное слово длины файла

+20h: 4 байта — младшее двойное слово длины файла

+24h: 8 байт — зарезервировано

+2Ch: 260 байт — ASCIZ-имя файла длинное

+130h: 14 байт — ASCIZ-имя файла короткое

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


Функция LFN 4Fh — Найти следующий файл

Ввод: АХ = 714Fh
ВХ = поисковый идентификатор (от функции 4Eh)
SI = формат даты/времени
ES:DI = адрес буфера для информации о файле
Вывод: CF = 0 и СХ = Unicode-флаг, если следующий файл найден
CF = 1, АХ = код ошибки, если произошла ошибка (7100h — функция не поддерживается)


Функция LFN A1h — Закончить поиск файла

Ввод: АХ = 71A1h
ВХ = поисковый идентификатор
Вывод: CF = 0, если операция выполнена
CF = 1 и АХ = код ошибки, если произошла ошибка (7100h — функция не поддерживается)


В качестве примера программы, использующей многие из функций работы с файлами, рассмотрим программу, заменяющую русские буквы «Н» на латинские «Н» во всех файлах с расширением .ТХТ в текущем каталоге (такая замена требуется для всех текстов, которые будут пересылаться через сеть Fidonet, программное обеспечение которой воспринимает русскую букву «Н» как управляющий символ).

; fidoh.asm ; заменяет русские "Н" на латинские "Н" во всех файлах с расширением .ТХТ ; в текущем каталоге .model tiny .code org 100h ; СОМ-файл start: mov ah,4Eh ; поиск первого файла xor cx,cx ; не системный, не каталог и т.д. mov dx,offset filespec ; маска для поиска в DS:DX file_open: int 21h jc no_more_files ; если CF = 1 - файлы кончились




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