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

         

Окрашивание прямоугольной



Пример 7.16. Окрашивание прямоугольной области заданным цветом

Fillreg: PushReg <bx, ex, di, Cur_win> ; сохранение в стеке
call calloffs ; вычисление константы offsline
fillrg: push ex ; сохранение значения счетчика строк
mov ex, dx ; задание количества точек в строке
call horline рисуем очередную строку
add di, bx адрес начала следующей строки
jnc @F -> адрес в пределах окна
call Nxtwin установка следующего окна
@@: pop ex восстановление счетчика строк
loop fillrg управление повторами цикла
PopReg <Cur_win, di, ex, bx> ; восстановление из стека
jmp setwin установка окна и выход

В отличие от примеров 7.14 и 7.15, в данном случае размер закрашиваемой области экрана не ограничен, лишь бы хватило памяти, установленной на видеокарте. Например, для окрашивания всей рабочей поверхности экрана в нужный цвет, перед вызовом подпрограммы код цвета помещается в регистре bx (или еах), в сх копируется переменная versize, а в dx — Horsize, регистр di очищается и устанавливается нулевое окно видеопамяти.

Текст примера 7.16 не зависит от видеорежима, но в нем вызывается подпрограмма horline, в тексте которой есть переменные команды, зависящие от видеорежима (см. раздел). Поэтому, в отличие от подпрограмм пересылки, подпрограмма Filireg не является универсальной.



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