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



       

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


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

ПРОГРАММА: ПРЯМОЕ БЛОЧНОЕ ЧТЕНИЕ ------------------------------------------------------------ На рис.16.4 приведена программа, выполняющая блочное чте ние файла, созданного программой на рис.16.1. Программа уста навливает начальный относительный номер записи 00, в регист ре CX - счетчик на 25 записей и выводит на экран всю информа цию из DTA (только для того, чтобы убедиться, что информация считана). Другие варианты программы могут включать установ ку другого начального номера записи и считывание менее 25 за писей. В программе организованы следующие процедуры:

E10OPEN Открывает файл, устанавливает размер записи в FCB равным 32 и устанавливает адрес DTA. F10READ Устанавливает число записей равным 25 и выполняет блочное чтение. G10DISP Выводит блок на экран.

Операция чтения преобразует относительный номер записи 00 в FCB в номер текущего блока 00 и номер текущей записи 00. В конце операции чтения в FCB текущий номер записи будет со держать шест.19, а относительный номер записи - шест. 19000000. ------------------------------------------------------------ ------------------------------------------------------------ Рис. 16.4. Прямое блочное чтение.

АБСОЛЮТНЫЕ ОПЕРАЦИИ ДИСКОВОГО ВВОДА-ВЫВОДА ------------------------------------------------------------ Для непосредственного доступа к диску можно использовать операции абсолютного чтения и абсолютной записи с помощью функций DOS INT 25H и 26H. В этом случае не используются оглавление диска и преимущества блокирования и разблокиро вания записей, обеспечиваемые функцией DOS INT 21H. Абсолютные операции предполагают, что все записи имеют размер сектора, поэтому прямой доступ осуществляется к полно му сектору или блоку секторов. Адресация диска выполняется по "логическому номеру записи" (абсолютный сектор). Для определения логического номера записи на двухсторонних дискетах с девятью секторами счет секторов ведется с дорожки 0, сектора 1, следующим образом:

Дорожка Сектор Логический номер записи 0 1 0 0 2 1 1 1 9 1 9 17 2 9 26




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