В этих режимах код точки занимает двойное слово (четыре байта), а код цвета — 24 разряда этого слова.
В примере 5.18 значение переменной augment вычисляется по формуле (horsize - 8)*4. Переменные grndcol и symbcol описываются директивой dd как двойные слова, а их содержимое (цвет) кодируется так, как описано в главе 7.
В тексте примера 5.19 изменяемые команды будут выглядеть так:
out_l: mov eax, grndcol ; ! ! еах = цвет точки окружающего фона
mov eax, symbcoi ; ! ! еах = цвет точки контура символа
out_2: stosd ; ! ! запись кода в видеопамять
add di, 32 ; !! позиция для следующего символа
Подчеркнем, что в примере 5.19 заменять надо только те команды, комментарий для которых начинается с двух восклицательных знаков, не нарушая общей последовательности команд.
Рассмотренный вариант знакогенератора работает с символами, ширина которых составляет 8 точек. Для того чтобы подпрограмма примера 5.19 выводила символы шириной в 16 точек, код строки можно считывать в регистр bx, а константу выделения хранить в dx, ее исходное значение зоооь. Наконец, можно усложнить знакогенератор так, чтобы он выводил символы переменной ширины. Об этом следует поговорить особо.