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

         

Ускоренное рисование линии в режимах HiColor I



Пример 7.7. Ускоренное рисование линии в режимах Hi-Color I

horline: push dx сохраняем содержимое регистра dx
mov dx, di копируем адрес в регистр dx
shl ex, 01 ! ! для True Color - shl ex, 02
add dx, ex сумма исходного адреса и размера линии
jc hrl 1 -> прямая расположена в двух окнах
xor dx, dx очистка регистра dx
hrl_l : sub ex, dx количество точек в текущем окне
shr ex, 01 ! ! для True Color — shr ex, 02
rep stosw ! ! для True Color — stosd
or di, di адрес в пределах текущего окна ?
jne hrl exit -> да, линия нарисована полностью
call NxtWin установка следующего окна
mov ex, dx количество не нарисованных точек
shr ex, 01 ! ! для True Color - shr ex, 02
rep stosw ! ! для True Color — stosd
hrl exit: pop dx восстановление содержимого dx
ret возврат из подпрограммы

Обратите внимание на то, что во второй части примера 7.7 проверяется только содержимое регистра di и не проверяется оставшееся количество точек. Это допустимо потому, что если регистр сх очищен, то цикл rep stosw не будет выполняться и предварительная проверка содержимого сх не обязательна.

В комментариях к примерам 7.6 и 7.7 указано, как надо изменить переменные команды для использования подпрограмм в режимах True Color, в таком случае код цвета линии помещается в регистр еах.



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