Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций -начало.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

86. Вывод графической информации на экран средствами bios.

Вывод пиксела на экран осуществляет функция АН=ОСh прерывания 10h. Значение в регистре СХ задает номер столбца, в ДХ – номер сстроки пиксела, а в регистре ВН – номер видеостраницы.

При выполнении такой функции в регистре AL задается код цвета пиксела. При этотм, если бит 7 значения в AL равен 1, то значение кода цвета пиксела образуется операцией исключающего ИЛИ переданного в AL значения и текущего кода цвета пиксела на экране. Если же бит 7 в AL равен 0, то переданное значение кода цвета переопределяет текущий код цвета пиксела на экране.

Цвет пиксела задается следующими битами:

а) в режимах 4,5 – битами 0 и 1.

б) для режимов с 16 цветами (0Dh, 0Eh, 10h, 12h) – битами 3,2,1,0.

Бит 7 в обоих случаях определяет исключаемее ИЛИ или переопределение цвета.

Программа вывода пиксела на экран может иметь следующий вид

Void vyvpixell () {int x,y;

  • AH= 0C; /*функция вывода*/

  • CH=X; /*номер столбца*/

  • ДX=У; /*номер строки*/

  • ВН=0; /*номер страницы*/

  • AL=0X8 color /*цвет пиксела*/

/* исключающее ИЛИ */

/* прерывание * / geninterrupt (0X10);}

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

Средства 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

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Черный

Синий

Зеленый

Сине-зеленый

Красный

Красно-синий

Коричневый

Светло-серый

Темно-серый

Ярко-синий

Ярко-зеленый

Яркий сине-зеленый

Ярко-красный

Яркий красно-синий

Желтый

Белый