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



       

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


MOV AH,1AH ; Установка LEA DX,DTAname ; адреса DTA INT 21H ; Вызов DOS

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

Для последовательного чтения записей с диска используется функция шест.14:

MOV AH,14H ; Последовательное LEA DX,FCBname ; чтение записей INT 21H ; Вызов DOS

Чтение записи с диска по адресу DTA осуществляется на ос нове информации в блоке FCB. Операция чтения устанавливает в регистре AL следующие коды возврата:

00 Успешное чтение. 01 Конец файла, данные не прочитаны. 02 В DTA нет места для чтения одной записи. 03 Конец файла, прочитана частичная запись, заполненная нулями. Первая операция чтения заносит содержимое всего сектора в буфер DOS. Затем операция определяет из блока FCB размер записи и пересылает первую запись из буфера в DTA. После дующие операции чтения пересылают остальные записи (если име ются) пока буфер не будет исчерпан. После этого операция чтения определяет адрес следующего сектора и заносит его со держимое в буфер. После успешной операции чтения в блоке FCB автоматически увеличивается номер текущей записи на 1. Завершение после довательного чтения определяется программой по маркеру конца файла (EOF), для чего в программе имеется соответствующая проверка. Так как оглавление при чтении файла не изменя ется, то обычно нет необходимости закрывать файл после завершения чтения. Исключение составляют программы, которые открывают и читают несколько файлов одновременно. Такие программы должны закрывать файлы, так как DOS ограничивает число одновременно открытых файлов.

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

BEGIN Инициализирует сегментны регистра, вызывает про цедуру E10OPEN для открытия файла и установки DTA и вызывает F10READ для чтения записей. Если считан маркер конца файла, то программа завершается, если нет, то вызывается процедура G10DISP. E10OPEN Открывает файл, устанавливает значение размера и записей, равное 32 (шест.20), и инициализирует адрес DTA.




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