Работа с файлами в MS DOS (имена 8.3). Создание, открытие, закрытие и удаление файла.
Следующий фрагмент программы показывает вариант применения функции 6Ch.
:prg07_04.asm – программа демонстрации открытия или создания файла :с расширенными возможностями в текущем каталоге функцией 6Сh. .data handle dw 0:дескриптор файла filename db 'my_file.txt'.0 point_fname dd filename .code хоrсх.сх атрибуты файла – обычный файл movbx.2:режим доступа обычный – доступ для чтения-записи movdx.l:если файл существует, то открыть его. в обратной случае вернуть ошибку (для эксперимента) Ids si.point_fname-.формируем указатель на имя файла movah.6ch :номер функции DOS int 21h открываем файл jnc ml;если файл существовал, то переход movdx.lOh – . открыть файл movah.6ch :номер функции DOS int 21h:открываем файл jc exit – переход в случае ошибки ml::действия при успешном открытии файла: mov handle.ах:сохраним дескриптор файла
Закрытие файла
В конце работы с файлом его нужно закрыть. Но это действие не является обязательным, так как функция 4сп, которая завершает выполнение программы, в числе прочих действий выполняет и закрытие всех файлов. Вход: АН = 3Eh; BX = дескриптор файла, полученный при его открытии.
Выход: CF = 0 – АХ = не определен; CF = 1 – АХ = код ошибки: 6 – недопустимый дескриптор.
Во время закрытия файла выполняются все незаконченные операции записи на диск в элементе каталога, соответствующего файлу, модифицируются различные поля, в том числе поля времени и даты устанавливаются в текущее время.
;prg07_05.asm – программа демонстрации закрытия файла функцией 3Eh. :……… .data handle dw 0:дескриптор файла filename db 'my_file.txt',О point fname dd filename ;……: .code:*…… хогсх.сх:атрибуты файла – обычный файл Ids dx.point_fnanve:формируем указатель на имя файла movah.5bh:номер функции DOS int 21h:открываем файл jnc ml;обойдем открытие файла moval.02h:режим доступа 1movah.3dh – . номер функции DOS int 21h:открываем файл jc exit:переход в случае ошибки ml::действия при успешном открытии файла: mov handle.ах;сохраним дескриптор файла т2:;закрываем файл:
В случае задания имени, как в примере выше, файл будет создан в корневом каталоге текущего диска. Для того чтобы разместить файл в конкретном каталоге, необходимо указать полный путь к нему с завершающим символом ' \' и 13 нулевыми байтами на конце, например:
filename db 'e:\asm_on_a\'.13 dup(0),0