Шаг 66.
Прямой блочный доступ в базовой версии DOS

    На этом шаге мы рассмотрим операции прямой блочной записи и чтения.

    Если в программе имеется достаточно места, то одна прямая блочная операция может записать весь файл из DTA на диск, а также прочитать весь файл с диска в DTA. Данная особенность весьма полезна для записи на диск таблиц, которые другие программы могут считывать в память для обработки.

    Начать можно с любого правильного относительного номера записи. Число записей также может быть любым, хотя блок должен находиться в пределах файла. Перед началом необходимо открыть файл и инициализировать DTA.

    Для операции прямой блочной записи необходимо установить в регистре СХ требуемое число записей, установить в FCB стартовый относительный номер записи и выдать функцию 28Н:

    MOV АН,28Н ;Операция  прямой блочной  записи.
    MOV СХ,KOL ;Установка числа записей.
    LEA  DX,FILE
    INT  21H   ;Вызов DOS.

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

    Кроме, того, операция устанавливает в FCB в поле относительного номера записи и в полях текущего номера блока и текущего номера записи значения, соответствующие следующему номеру записи. Например, если были записаны записи с 00 до 24, то следующий номер записи будет 25 (19Н).

    Для операции прямого блочного чтения необходимо установить в регистре СХ требуемое число записей и использовать функцию 27Н:

    MOV AH,27H ;Операция прямого блочного чтения.
    MOV CX,KOL ;Установка числа записей.
    LEA  DX,FILE 
    INT  21H   ;Вызов  DOS

    Операция чтения возвращает в регистре AL следующие значения:

    В регистре СХ остается действительное число прочитанных записей, а в FCB в поле относительного номера записи и в полях текущих номеров блока и записи устанавливаются значения, соответствующие следующему номеру записи.

    Если необходимо загрузить в память весь файл, но число записей неизвестно, то следует после операции открытия разделить размер файла на длину записи. Например, для размера файла 320Н (800) и длины записи 20Н (32) число записей будет 19Н (25).

    На следующем шаге мы приведем пример программы, иллюстрирующей рассмотренные операции.




Предыдущий шаг Содержание Следующий шаг