Ввод текстовой информации на экран.
Средства BIOS располагают следующими функциями вывода на экран.
1) АН = 09 h – вывод символа с заданным атрибутом в текущей позиции курсора.
2) АН = 0А h – вывод символа без атрибута в текущей позиции курсора.
3) АН = 0Е h – вывод символа без атрибута в текущей позиции курсора в режиме "телетайп".
4) АН = 13h – вывод строки символов с различными дополнительными операциями, со сдвигом курсора и без сдвига, с определением атрибута для всей строки, для каждого символа или без определения атрибута.
Самой удобной является функция АН = 09h. При ее выполнении выводимый символ помещается в регистр AL, а атрибут символа в регистр BL. Регистр ВН задает номер текущей страницы, а СХ – число повторений для выводимого символа.
Пример вывода на экран символа а находящегося в строке с номером stroka и столбце с номером stolbec приведен в виде функции
Wyw (void)
{ /* позиционирование курсора */
_АН =0Х02;
_ДН = stroka;
_ДL = stolbec;
_BH = page;
geninterrupt (0X10);
/* вывод символа на экран */
_AH = 0X09 h;
_AX = 'a'
_BX = attr;
_CX = 1;
geninterrupt (0X10):}
С использованием функции языка Си эта программа имеет вид
# include <conio.h>
wyw (void)
{int stroka, stolbec;
goto (stolbec, stroka);
putch ('a'):}
В этой программе вывод символа на экран осуществляет функция putch ( ). Кроме названной язык Си имеет следующие функции вывода:
# include <conio.h>
int cputs (const char * str)
Выводит строку символов в текстовое окно, начиная с текущей позиции курсора
# include <conio.h>
int cprintf (const char * format, …)
Осуществляет вывод в текстовое по определенному формату.
Обе приведенные функции являются аналогами соответственно puts ( ) и printf ( ).
Только в данном случае для перевода курсора в начало новой строки следует вывести последовательность символов CR_LF (0X0d, 0x0a)
# include <conio.h>
int movetext (int left, int top, int right, int bottom, int destleft, int desttop)
переносит окно с координатами левого верхнего (left, top) и правого нижнего (right, bottom) углов в другое место, заданное координатами верхнего угла (destleft, desttop).
# include <conio.h>
int puttext (int left, int top, int right, int bottom, void * souru)
выводит на экран текстовое окно, заданное координатами левого верхнего (left, top) и правого нижнего (right, bottom) углов. Символы и атрибуты находятся в буфере, адрес начала которого задает указатель souru.
Напомним, что буфер – это часть оперативной памяти, выделенной для экрана
# include <conio.h>
void highvideo (void);
void lowvideo (void);
void normvideo (void); -
Функции задают использования соответственно повышенной, пониженной и нормальной яркости вывода символов.
# include <conio.h>
void cercol (void) –
стирает строку, начиная с текущей позиции курсора.
# include <conio.h>
void cerser (void)
очищает все текстовое окно.
# include <conio.h>
стирает всю строку текста, на которую установлен курсор.
# include <conio.h>
void insline (void)
оставляет пустую строку в текущей позиции курсора со сдвигом всех остальных строк на одну строку вниз
# include <conio.h>
void textattr (int newattr).
Устанавливает атрибут для функций, работающих с текстовыми окнами. Например, для задания мерцающих ярко-красных символов на сером фоне атрибут можно сформулировать следующим образом
BLINK /(BLACK <<4)/ LIGHTRED
Или
(DARKGRAY <<4)/ LIGHTRED
# include <conio.h>
void textcolor (int newcolor).
задает цвет символов, не затрагивая цвета фона
# include <conio.h>
void text backgraund (int newcolor).
Задает цвет фона, не затрагивая цвет символа.
Цвета задаются числом или константой.
В таблице приведены константы и коды цветов в языке Си.
Таблица 101. Цвета в языке Си.
Символическая константа | Значение в 10 С/С | Цвет на экране |
BLACK BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE | Черный Синий Зеленый Сине-зеленый Красный Красно-синий Коричневый Светло-серый Темно-серый Ярко-синий Ярко-зеленый Яркий сине-зеленый Ярко-красный Яркий красно-синий Желтый Белый |