Управление курсором

Для работы в текстовом режиме необходимо определить форму курсора. Им отображается текущая позиция экрана, по которой осуществляется ввод или вывод символа средствами BIOS. Все функции по управлению курсором обслуживаются прерыванием 10h.

Толщина курсора задается функцией АН = 01h. Регистр СН определяет номер верхней строки знакоместа, а CL - нижней.

Установка курсора в определенную позицию осуществляется функцией AH = 02h. Верхнему левому углу экрана в BIOS соответствует тексел с координатами (0.0). Для позиционирования курсора регистр DH задает номер строки, a DL - номер столбца позиции курсора. ВН задает номер страницы (страницы нумеруются от 0).

Функция АН = 03 читает текущую позицию курсора для видеостраницы, номер которой указывается регистром ВН. При этом в регистрах DH и DL сообщаются номер строки и столбца текущей позиции курсора, а в регистрах CH, CL - форма курсора.

Остановка курсора в определенную позицию выполняется следующей функцией языка СИ

# include <conio.h>

void go to xy (int x, int y)

В этой функции х и у - координаты, определяющие номер столбца и номер строки соответственно.

Текущая позиция курсора сообщается функциями

# include <conio.h>

int where (void)

int where (void)

Первая из них сообщает номер столбца, а вторая - номер строки. Диапазон соответствующих величин от I до 80 и от I до 25.

Ввод текстовой информации с экрана.

С экрана вводится символ в текущей позиции курсора. Ввод символа с экрана средствами BIOS осуществляет функция АН = 08 прерывания 10h. В этом случае в регистр AL записываются код символа, а в регистр АН – его атрибут.

Ввод в видеобуфер символов и атрибутов текстового окна осуществляет функция языка Си

# include <conio.h>

int gettext (int left, int top, int right, int bottom, void * destin)

Эта функция вводит в буфер область прямоугольника, ограниченного координатами левого верхнего (left, top) и правого нижнего (right, bottom) углов.

Первые два слова буфера занимают ширина и длина сканированного окна. В случае успеха возвращается ненулевое число.

Приведенная ниже программа позиционирует курсор в точку (х, у) и присваивает переменным symb и attr коды символа и атрибута.

# include <dos.h>

symbattr { int x,y;

char symb, attr;

_AH = 0x02;

_DH = y;

_DL = x;

geninterrupt (0x10);

_AH = 0x08;

geninterrupt (0x10);

symb = _AL;

attr = _AH; }

Графический экран.

Графический экран представляет собой матрицу пикселов.(рис.17.). Каждый пиксел характеризуется своим цветом.

Рис.17

1.В простейшем случае (CGA – режим 6) пиксел имеет два цвета – черный и белый. Для этого в памяти видеоадаптера выделяется 1 бит. Если значение бита равно 1 - то цвет пиксела белый, если 0 - то черный.

Размер памяти М, необходимый для хранения всех пикселов экрана составит

M = m*n/8 байт

где m - число строк, a n - число столбцов.

Исходя из таблицы 7 это число составит 1600 байт.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: