Ассемблер и программирование для IBM PC



       

ГЛАВА 16. Дисковая память II: Функции базовой версиии DOS - часть 6


Операция закрытия заносит во второй сектор оставшиеся в буфере девять записей и изменяет в оглавлении дату и рвзмер файла. Размер записывается байтами в переставленном порядке: 20030000. Последний буфер имеет следующий вид:

Буфер: |запись 16|запись 17|...|запись 24|шест.1A|...|...|

Для простоты в приведенной программе создаются записи файла, содержащие только одно поле. Записи большинства других файлов, однако, содержит различные символьные и двоичные поля и требуют описания записи в DTA. Если записи содержат двоичные числа, то не следует использовать маркер конца файла (EOF), так как двоичное число может совпасть с шест. кодом 1A. Для того, чтобы сделать программу более гибкой, можно разрешить пользователю указать дисковод, на котором находит ся или будет находиться файл. В начале выполнения программа может выдать на экран сообщение, чтобы пользователь ввел номер дисковода, а затем изменить первый байт блока FCB.

ПОСЛЕДОВАТЕЛЬНОЕ ЧТЕНИЕ ДИСКОВОГО ФАЙЛА ------------------------------------------------------------ В базовой версии DOS программа, читающая дисковый файл, содержит блок управления файлом, который определяет файл точно так, как он был создан. В начале программа для откры тия файла использует функцию шест. OF:

MOV AH,OFH ; Открытие LEA DX,FCBname ; файла INT 21H ; Вызов DOS

Операция открытия начинается с поиска в оглавлении элемен та с именем и типом файла, определенными в FCB. Если такой элемент не будет найден в оглавлении, то в регистре AL уста навливается шест. FF. Если элемент найден, то в регистре AL устанавливается 00 и в FCB заносится действительный размер файла, а также устанавливается номер текущего блока в 0, длина записи в шест.80. После открытия можно заменить длину записи на другое значение. DTA должно содержать определение считываемой записи в соответствии с форматом, который использовался при создании файла. Для установки адреса DTA используется функция шест.1A (не путать с маркером конца файла EOF шест.1A) аналогично созданию дискового файла:




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