
- •Робота з файлами
- •Теоретичні відомості
- •Работа с файлами с длинными именами в ms-dos
- •Описание функций для работы с файлами с длинными именами:
- •716Сh - открыть или создать файл
- •7141H – удаление файла с длинным именем.
- •714Eh - поиск первого соответствующего файла с длинным именем
- •714Fh – найти следующий файл
- •5706H – получить дату и время создания файла
- •5707H – установить дату и время создания или последней модификации файла
- •7143H – получить или установить атрибуты файла
- •7156H – переименовать файл
- •7160H – Получить полный путь файла
- •Вспомогательные функции при работе с файлами:
- •67H – изменить максимальное число идентификаторов файлов, доступных для одновременной работе в системе:
- •71A7h – Преобразование времени из Windows-формата в dos-формат и наоборот
- •Рекомендации по построению программы, использующей функции работы с файлами
- •1) Обработка ошибок – вывод сообщения о конкретной ошибке
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •2) Вывод информации о файле
- •3) Поиск файла с длинным именем
- •Int 21h
- •Додаток 0
- •Приложение 2 Примеры и алгоритмы программ, использующих функции работы с файлами
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Xor ah,ah
- •Int 21h
- •Int 21h
7156H – переименовать файл
Вход: | |
АХ |
7156h |
DS:DX |
ASCIZ-строка с именем существующего файла |
ES:DI |
ASCIZ-строка с новым именем файла |
CL |
Маска атрибутов |
Выход: | |
CF |
0 – операция выполнена успешно 1 – произошла ошибка |
AX |
Код ошибки при CF=1 (см. табл. 6) |
7160H – Получить полный путь файла
Данная функция работает очень примитивно – берётся относительный адрес и к нему добавляется имя текущего диска или каталога. Поэтому проверять существование файла надо при необходимости другими функциями.
Вход: | |
АХ |
7160h |
DS:SI |
ASCIZ-строка с именем файла или каталога, для которых надо получить полный путь |
ES:DI |
ASCIZ-строка, в которую надо записать полный путь (должен быть достаточным для хранения информации, как правило, 260 байт (см. функцию71a0h)) |
CH |
Содержимое результата: 80 – получить имя диска 0 – получить полный путь |
CL |
0 – получить полный путь 1 – получить полный путь с краткими именами 2 – получить полный путь с длинными именами |
Выход: | |
CF |
0 – операция выполнена успешно 1 – произошла ошибка |
AX |
Код ошибки при CF=1 (см. табл. 6) |
Вспомогательные функции при работе с файлами:
67H – изменить максимальное число идентификаторов файлов, доступных для одновременной работе в системе:
Вход: АН=67h
BX– новое максимальное число идентификаторов в системе (20 - 65535)
Выход:CF=0 – ошибка не произошла
CF=1 – ошибка, код ошибки помещается вAX
Код ошибки |
Описание |
04h |
Заданное число меньше, чем число уже открытых файлов |
08h |
DOSне хватает памяти для новой таблицы идентификаторов |
71A7h – Преобразование времени из Windows-формата в dos-формат и наоборот
Преобразование Windows-формата вDOS-формат:
Вход: | |
AX |
71A7h |
BL |
0000h |
DS:SI |
Указатель на структуру, содержащую 64-битное значение времени |
Выход: | |
CF |
0 – операция выполнена успешно 1 – произошла ошибка |
BH |
Число 10-милисекундных интервалов, добавляемых ко времени DOS(значение 0..199) |
CX |
Время в формате DOS |
DX |
Дата в формате DOS |
Преобразование DOS-формата вWindows-формат
Вход: | |
AX |
71A7h |
BL |
0001h |
BH |
Число 10-милисекундных интервалов, добавляемых ко времени DOS(значение 0..199) |
CX |
Время в формате DOS |
DX |
Дата в формате DOS |
DS:DI |
Указатель на 64-битный буфер для возврата результата |
Выход: | |
CF |
0 – операция выполнена успешно 1 – произошла ошибка |
DS:DI |
Результат при успешно выполненной операции |
AX |
Код ошибки при CF=1 (см. табл. 6) |
Рекомендации по построению программы, использующей функции работы с файлами
Эти рекомендации приведены для того, чтобы помочь структурировать программу таким образом, чтобы чётко была видна логика её работы. Они не являются обязательными. Возможно, для конкретной задачи какие-то пункты не нужны, или их можно оптимизировать.