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



       

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


Ассемблер для IBM PC. Глава 16. 8

F10READ Выполняет последовательное чтение записей. Опера ция чтения автоматически увеличивает номер текущей запи си в блоке FCB. G10DISP Выводит на экран содержимое прочитанной записи. X10ERR Выводит на экран сообщение об ошибке в случае некорректной операции открытия или чтения.

------------------------------------------------------------ ------------------------------------------------------------ Рис. 16.2. Чтение дискового файла

Операция открытия выполняет поиск имени и типа файла в оглавлении. Если необходимый элемент оглавления найден, то автоматически в блок FCB заносятся размер файла, дата и длина записей. Первая операция чтения записи с номером 00 получает доступ к диску и считывает весь сектор (16 записей) в буфер. После этого первая запись заносится в DTA, а номер текущей записи в FCB увеличивается с 00 до 01:

Буфер: |запись 00|запись 01|запись 02|... |запись 15| DTA : |запись 00| Второй операции чтения нет необходимого обращаться к дис ку. Так как требуемая запись уже находится в буфере, то опе рация просто пересылает запись 01 из буфера в DTA и увели чивает номер текущей записи на единицу. Таким же образом вы полняются следующие операции чтения пока все 16 записей из буфера не будут обработаны. Операции чтения 16-ой записи приводит к физическому чтению следующего сектора в буфер и пересылка первой записи сектора в DTA. Последующие операции чтения переносят осталь ные записи из буфера в DTA. Попытка прочитать после последней записи вызовет состояние конца файла и в регистр AL будет записан код возврата шест. 01.

ПРЯМОЙ ДОСТУП ------------------------------------------------------------ До сих пор в этой главе рассматривалась последовательная обработка дисковых файлов, которая адекватна как для созда ния файла, так и для печати его содержимого или внесения из менений в небольшие файлы. Если программа ограничена только возможностью последовательной обработки, то для изменения файла она должна считывать каждую запись, вносить изменения в определенные из них и заносить записи в другой файл (программа может использовать один DTA, но потребуются различные блоки FCB). Обычной практикой является чтение входного файла с диска A и запись обновленного файла на диск B. Преимущество этого способа состоит в том, что он автома тически оставляет резервную копию. В некоторых случаях применяется доступ к конкретным записям файла для получения информации, например, нескольких служащих или о части ассортимента товаров. Для доступа, скажем, к 300-ой записи файла, последовательная обработка




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