Графические устройства

         

Чтение фрагмента файла в буфер обмена



Пример 3.23. Чтение фрагмента файла в буфер обмена

Readf: PushReg <bx,dx,ds> ; сохраняем в стеке bx и ds
mov bx, handler ; указываем заголовок файла
Ids dx, dword ptr SwpOffs; задаем адрес буфера для чтения
mov ax, 3FOOh ; код функции DOS "чтение файла"
int 21h ; обращение к DOS
PopReg <ds,dx,bx> ; восстанавливаем из стека bx и ds
ret ; возврат из подпрограммы

В примере 3.23 адрес буфера обмена выбирается из переменных SwpOffs и swpseg, описанных выше. Если при чтении данных возникнет ошибка, то после возврата из int 2in и из подпрограммы будет установлен С-разряд регистра флагов (признак переполнения). При успешном чтении DOS возвращает в регистре ах размер прочитанной порции данных в байтах. Если при чтении обнаружен конец файла, то эта величина может быть меньше указанной в регистре сх.

В примере 3.23 используется еще одна переменная handler, содержащая ссылку на файл (file handle). Эту величину формирует DOS при открытии файла по указанной спецификации и передает задаче в регистре ах. Ее надо сохранить, например в переменной handler и использовать при дальнейшей работе с файлом.

Способ открытия файла для чтения описан в приложении А в примере А. 1. Для получения более подробной информации на эту тему рекомендуем обратиться к электронной справочной системе Tech Help, или к любому руководству по программированию MS DOS.



Содержание раздела