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


           

Чтение очередного символа из буфера обмена



Пример 3.25. Чтение очередного символа из буфера обмена

Nxt sym: cmp si, incount в буфере есть символы ?
jb @F -> да, можно читать очередной символ
push ex сохраняем содержимое сх
mov ex, -I указываем размер порции данных
call Readf читаем данные из файла
mov incount, ax сохраняем размер порции данных
xor si, si очищаем указатель адреса
pop ex восстанавливаем содержимое сх
@@: lods byte ptr fs : [si] чтение очередного байта
ret ; возврат из подпрограммы

Подпрограмма примера 3.25 сравнивает текущее значение указат еля адреса буфера обмена (содержимое регистра si) с переменной incount.-, значение которой соответствует размеру считанной из файла порции данных, т. е. количеству байтов, находящихся в буфере обмена.

Если в буфере достаточно данных, то происходит переход на локальную метку @@ Для чтения кода символа в регистр al, увеличения указат-теля адреса на 1 и выхода из подпрограммы.

Если достигнута граница данных, хранящихся в буфере обменна, то надо прочитать новую порцию данных. Для этого сохраняется содержимое регистра сх, в него записывается предельное количество байтов для чтения (-1 имеет код OFFFFh) и происходит обращение к подпрограмме Readf, описанной в примере 3.23.

После чтения в переменную incount записывается количество прочитанных байтов, очищается регистр si и восстанавливается из стека содержимое регистра сх. Теперь можно прочитать очередной символ, увеличить значение сх на единицу и выйти из подпрограммы.

В примере 3.25 отсутствует проверка состояния С-разряда регистра признаков после чтения. Вы можете включить ее в текст примера 3.25., но целесообразнее контролировать правильность чтения непосредственно-о в подпрограмме Readf. Это упростит структуру всех подпрограмм, котогдрые обращаются К Readf.

Замечание 1
Замечание 1

В литературе встречаются сведения о существовании файлов, че.астично не соответствующих стандарту фирмы ZSoft — при их сжатии цикл упаковки не прекращается в конце строки. Для распаковки подобных файлов подпрограмму примера 3.24 надо изменить так, чтобы она выдавала заданноное количество распакованных кодов независимо от размера строки.



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





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий