Данная функция позволяет прочитать символ и его атрибуты из позиции экрана, определенной текущим положением курсора. Чтение можно производить как из активной, так и из неактивных страниц памяти:
На входе: |
AH |
08h |
BH |
Номер страницы видеопамяти |
|
На выходе: |
AL |
ASCII-код символа |
AH |
Байт атрибутов символа для текстовых режимов |
Следующий пример считывает символ и его атрибут из текущей позиции курсора на странице page:
mov ah,8
mov bh,page ; Выбираем страницу видеопамяти page
int 10h ; Считываем символ и его атрибут
mov char,al ; Сохраняем полученный ASCII-код символа
mov attr,ah ; и его атрибут
Что удивительно данная функция может работать не только в текстовых, но также и в графических режимах. В этом случае она сравнивает пикселы в текущей позиции курсора с записями в таблице определения символов графического режима. Пикселы, значение которых не равно нулю, воспринимаются как пикселы символа. Остальные пикселы рассматриваются в качестве фона. Если соответствующий образ символа не обнаружен, функция возвращает в регистре AL значение 0. Если символ определен, в регистре AL возвращается его ASCII-код.
В качестве таблицы определения символов графического режима используется таблица, на которую указывает вектор прерывания 43h. Для графических режимов низкого разрешения (режимы номер 4, 5, 6) используется таблица символов, на которую указывает вектор прерывания 1Fh. Эта таблица содержит определение символов с ASCII-кодами 80h - FFh.