OutAtr: push ax сохраняем содержимое ах
mov ai, Ы помещаем атрибут в al
wrtatr: inc di пропускаем четный байт
stosb записываем код атрибута
loop wrtatr управление повторами цикла
pop ax восстанавливаем содержимое ах
ret возврат из подпрограммы
При обращении к подпрограмме OutAtr в регистре di указывается адрес видеопамяти, в регистре bl— атрибут, а в сх — сколько раз его надо записать в видеопамять (количество раскрашиваемых символов).
Перемещение курсора
Если задача использует текстовый курсор, то для его перемещения можно использовать функцию 02 прерывания int ion, или составить свою подпрограмму. Такая подпрограмма полезна, например, в тех случаях, когда недопустимо использование поддержки BIOS.
В примере 5.15 приведена подпрограмма перемещения курсора, к которой можно обратиться по двум именам. При обращении по имени Poseur происходит обращение к описанной в примере 5.11 подпрограмме GetAdr, которая пересчитывает координаты в адрес и помещает его в регистр di. В этом случае номер страницы указывается в регистре bх, а значения координат выбираются из области данных BIOS. При обращении по имени MovCur адрес байта должен находиться в регистре di.
Замечание
Не забывайте, что курсор будет виден только в том случае, когда его рисунок расположен на активной странице.