Assembler для начинающих



         

Блок управления файлом (FCB) - часть 12


    осуществляется с помощью следующей синтаксической конструкции:
 
      A> FIG5=6 TEST.FIL
 
      FIG5=6 - имя программы. В каталоге программа фигурирует под
    именем FIG5=6.COM. Файл TEST.FIL является файлом, который программа
    создает и затем модифицирует. Интерпретатор командных строк
    выбирает имя "TEST.FIL" и помещает его в соответствующее поле блока
    FCB со смещением 05CH. Рассматривая имя файла в качестве параметра
    командной строки, можно с помощью описываемой программы создавать и
    модифицировать любой файл. Если бы имя файла входило в ассемблерную
    программу, мы могли бы работать только с единственным файлом.
 
      Начиная со смещения 05CH, текст программы соответствует
    структуре блока FCB. Первая ячейка идентифицируется меткой блока
    FCB. Каждое из полей FCB имеет свою метку и длину, так что
    программа может обрабатывать их непосредственно. Например, чтобы
    задать длину записи, программа модифицирует переменную
    FCB_RECORD_SIZE.
 
      Начиная с адреса 080H помещается еще одно специальное поле
    программного префикса. Эта область памяти размером 128 байт
    отводится по умолчанию под область связи с диском DTA (Disk
    Transfer Area) и используется DOS в качестве буфера для всех
    файловых записей. Всякий раз, записывая или читая запись, DOS
    использует буфер области DTA. Во время инициализации DOS
    устанавливает смещение области DTA в программном сегменте равным
    080H. Программа может изменить это значение, используя функцию 1AH
    прерывания 21H. Это смещение должно быть изменено, еслм длина
    записи больше, чем 128 байт. В рассматриваемом примере область
    связи с диском сдвигается до смещения в сегменте, равного 90H. Это
    связано с тем, что блок FCB со смещением 05CH выходит за границу с
    адресом 80H. Если бы граница области DTA определялась соглашением,
    принятым по умолчанию, то при передаче файлов информация в
    последнем байте блока FCB была бы разрушена. В этом байте



Содержание  Назад  Вперед