записывается номер записи при произвольном
записывается номер записи при произвольном доступе к файлу. Так как
в данной программе для чтения-записи данных используется
произвольный доступ, упомянутое наложение информации необходимо
исключить.
Первая команда программы имеет смещение 100H и является
переходом на фактическое начало программы. Такая структура
программы может показаться неэффективной, однако ассемблирование
происходит гораздо успешней, если все данные помещаются перед
командами, которые на них ссылаются. Фактически в программе могут
быть ошибки, если она содержит ссылки на данные вперед. Поэтому для
большей надежности данные помещаются в начале программы.
В первой части программы устанавливается область связи с
диском. В данной программе эта буферная область имеет смещение 90H.
Так как длина записи равняется только 32 байтам, то впереди
программы имется достаточно места.
Далее в программе используется прерывание 21H и функция DOS для
поиска файла с именем, совпадающим с именем, записанным в блоке
FCB. Обратите внимание, что пара регистров DC:DX указывает на блок
FCB, как и должно быть при любых файловых операциях. Если система
обнаружит файл с идентичным именем, программа завершит работу,
выдав сообщение об ошибке и сохранив существующий уже файл. В
данной программе обрабатываются только новые файлы. Существующие
файлы здесь никак не используются, однако гарантируется, что их
содержимое программой не сотрется. Конечно, в реальной практике
програма была бы составлена так, чтобы охватывать случай как новых,
так и уже существующих файлов.
Создание файла обеспечивается участком программы, помещенным
NO_FILE. Формировать блок FCB до этого данной программе не нужно,
так как он был сформирован командным процессором. Если описываемая
файловая операция не сможет быть выполнена, например, из-за
отсутствия свободного места на диске или отсутствия места в
Содержание Назад Вперед