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



       

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


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

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

C10OPEN Открывает файл, устанавливает размер записи 32 и устанавливает адрес DTA. D10RECN Вводит номер записи с клавиатуры, преобразует его в двоичный формат и записывает полученное значение в FCB. В качестве усовершенствования процедуры можно вставить проверку вхождения номера в границы от 00 до 24. F10READ Помещает требуемую запись в DTA в соответствии с относительным номером записи в FCB. G10DISP Выводит запись на экран.

Процедура D10RECN вводит номер записи с клавиатуры и про веряет длину ввода в списке параметров. Возможны три вариан та: 00 Запрошен конец обработки 01 Введено однозначное число (в регистре AL) 02 Введено двухзначное число (в регистре AX)

------------------------------------------------------------ ------------------------------------------------------------ Рис.16.3. Прямое чтение дисковых записей.

Данная процедура преобразует введенное число из ASCII формата в двоичный формат. Так как значение находится в ре гистре AX, то лучше использовать команду AAD для преобра зования. После преобразования двоичный код из регистра AX пересылается в два левых байта поля относительного номера записи в блоке FCB. Если, например, введено число 12 в ASCII формате, то AX будет содержать 3132. Команда AND преобразует это значение в 0102, а команда AAD - в 000C. Результат пре образования заносится в поле относительного номера записи блока FCB в виде С000 0000.

ПРЯМОЙ БЛОЧНЫЙ ДОСТУП ------------------------------------------------------------ Если в программе имеется достаточно места, то одна прямая блочная операция может записать весь файл из DTA на диск, а также прочитать весь файл с диска в DTA. Данная особенность весьма полезна для записи на диск таблиц, которые другие про граммы могут считывать в память для обработки.




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