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

         

Построение строки 256цветного рисунка



Пример 3.15. Построение строки 256-цветного рисунка



drawline: movs byte ptr [di] , fs:[si] ; запись кода точки в видеобуфер
or di, di ; начало нового сегмента ?
jne @F ; -> нет, обход команды call NxtWin
call NxtWin ; установка следующего окна
@@: loop drawline ; управление повторами цикла
ret ; возврат из подпрограммы

Сравните второй вариант примера 3.6 и пример 3.15. Приведенные в них тексты различаются только первой командой. Вместо stosb, записывающей в видеопамять содержимое регистра ai, в данном случае используется строковая операция movs, копирующая в видеопамять байты оперативной памяти. Обратите внимание на то, что в записи строковой операции сегментный регистр приемника (es) указывать не обязательно, а сегментный регистр источника (fs) вы можете изменить по своему усмотрению.

Подпрограмма примера 3.15 выводит точки в порядке увеличения их адресов. В некоторых случаях может возникнуть необходимость выводить точки в обратном порядке (справа налево) в сторону уменьшения адресов. Как можно нарисовать линию в направлении справа налево, было показано во втором варианте примера 3.7. Если в этом примере команду lodsb заменить командой movs byte ptr [di], fs:[si], то подпрограмма будет строить строку рисунка в обратном направлении. Когда и зачем может понадобиться такая замена, мы обсудим при описании построения рисунков.



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