; Вариант 1 для работы в режимах True Color
drawline: movs word ptr [di], f s: [si]; копируем коды синего и зеленого
lods byte ptr fs:[si] ; al = код красного цвета
xor ah, ah очистка резервного байта
stosw записываем старшее слово кода
or di, di адрес в пределах сегмента ?
jnz @F -> да, обход команды
call NxtWin установка следующего окна
@@: loop drawline управление повторами цикла
ret возврат из подпрограммы
; Вариант 2 для работы в 15-разрядных режимах Hi-Color
drawline: mov al, fs:[si+2] читаем код красного цвета в
В разделе и разделе описано преобразование цветов, хранящихся в палитрах, в форматы Hi-color и True Color. Отличие рассмотренного здесь случая в том, что исходные цвета расположены не в палитре, а в строке образа рисунка, находящейся в буфере обмена. Поэтому первый вариант примера 7.26 является циклом примера 7.19, а второй вариант примера 7.26 является циклом примера 7.18.
Таким образом, при построении полноцветных рисунков формата BMP текст основной подпрограммы не зависит, а вспомогательной (drawline) зависит от видеорежима. Исключить эту зависимость невозможно, но при использовании директив условного ассемблирования можно задавать признак для выбора нужной подпрограммы.