Ассемблер и программирование для IBM PC



         

ГЛАВА 9. Экранные операции II: Расширенные возможности - часть 6


AH=08: Чтение атрибута/символа в текущей позиции курсора. Для чтения символа и байта атрибута из дисплейного буфера, как в текстовом, так и в графическом режиме используются следующие команды:

Ассемблер для IBM PC. Глава 9 205

MOV AH,08 ;Запрос на чтение атр./симв. MOV BH,00 ;Страница 0 (для текстового реж.) INT 10H ;Вызвать BIOS

Данная функция возвращает в регистре AL значение символа, а в AH - его атрибут. В графическом режиме функция возвращает шест. 00 для не ASCII-кодов. Так как эта функция читает только один cимвол, то для символьной строки необходима организация цикла.

AH=09: Вывод атрибута/символа в текущую позицию курсора. Для вывода на экран символов в текстовом или графическом режиме с установкой мигания, инвертирования и т.д. можно воспользоваться следующими командами:

MOV AH,09 ;Функция вывода MOV AL,символ ;Выводимый символ MOV BH,страница ;Номер страницы (текст.реж.) MOV BL,атрибут ;Атрибут или цвет MOV CX,повторение ;Число повторений символа INT 10H ;Вызвать BIOS

В регистр AL должен быть помещен выводимый на экран символ. Значение в регистре CX определяет число повторений символа на экране. Вывод на экран последовательности различных симво лов требует организации цикла. Данная функция не перемещает курсор. В следующем примере на экран выводится пять мигающих "сердечек" в инвертированном виде:

MOV AH,09 ;Функция вывода MOV AL,03H ;Черви (карточная масть) MOV BH,00 ;Страница 0 (текст. режим) MOV BL,0F0H ;Мигание, инверсия MOV CX,05 ;Пять раз INT 10H ;Вызвать BIOS

В текстовом (но не в графическом) режиме символы автомати чески выводятся на экран и переходят с одной строки на другую. Для вывода на экран текста запроса или сообщения необходимо составить программу, которая устанавливает в регистре CX значение 01 и в цикле загружает в регистр AL из памяти выводимые символы текста. Так как регистр CX в данном случае занят, то нельзя использовать команду LOOP. Кроме того, при выводе каждого символа необходимо дополнительно продвигать курсор в следующий столбец (функция 02). В графическом режиме регистр BL используется для определе ния цвета графики. Если бит 7 равен 0, то заданный цвет заме няет текущий цвет точки, если бит 7 равен 1, то происходит комбинация цветов с помощью команды XOR.




Содержание  Назад  Вперед