2. Исследование видеосистемы (текстовый режим)
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
отчЁт
по лабораторной работе №2 (вариант 7)
по дисциплине «Организация ЭВМ и систем»
Тема: Исследование видеосистемы (текстовый режим)
Студент гр. 9300 |
ФИО |
Преподаватель |
Лебедев С. В. |
Санкт-Петербург
2020
Цель работы.
Изучить работу с видеосистемой в текстовом режиме, освоить приёмы использования цветовой палитры: изменение цвета символов и фона на всём экране и в отдельном окне.
Задание.
Написать программу, чтобы в окно с координатами (20, 8, 60, 18) с шагами 0,9 (секунд) и 1 (строк) выводилась надпись при всех возможных комбинациях цвета фона и цвета символов. Для каждой комбинации цветов в окне должны выводиться символьные обозначения цветов фона и символов: на русском и английском соответственно. Направление вывода — вверх.
Краткие сведения.
Видеосистемы ПЭВМ.
Изображение на экране формируется видеоадаптером из пикселов, количество которых может быть различно для разных типов адаптера. В самом общем виде видеоадаптер состоит из двух основных частей: контроллера и видеопамяти. Память, необходимая для хранения одного образа экрана, называется видеостраницей. Объём видеопамяти и число возможных страниц, зависит от конкретного адаптера. Управление параметрами видеосистемы может выполняться на уровне портов видеоадаптера или обращением к функциям BIOS. Режимы работы видеоадаптеров можно объединить в две группы: текстовые и графические. Переключение из текстового режима в графический и наоборот означает полное изменение логики работы видеоадаптера с видеобуфером.
Текстовый режим работы ПЭВМ.
В текстовый режиме экран рассматривается как совокупность текселов, каждому из которых соответствуют два байта памяти видеобуфера: один из них хранит ASCII-код символа, а другой — особенности его отображения.
Функции обслуживания текстового режима.
Функции помещены в файле <conio.h>.
window(int x0, int y0, int x1, int y1);
Устанавливает положение и размер активного текстового окна.
gettextinfo(struct text_info* t);
Записывает информацию об активном окне по указателю t.
gotoxy(int x, int y);
Изменяет текущую позицию курсора. Координаты задаются относительно левого верхнего угла активного окна.
wherex(); wherey();
Возвращают позицию курсора по X и по Y соответственно.
clreol();
Стирает в текстовом окне строку, начиная с текущей позиции курсора.
clrscr();
Очищает текстовое окно и заливает его цветом атрибута окна.
delline();
Стирает в текстовом окне строку, на которую установлен курсор.
insline();
Вставляет пустую строку в позиции курсора со сдвигом остальных строк вниз.
cprintf(const char* format, ...);
Выполняет вывод по заданной форматной строке.
cputs(char* str);
Выводит строку символов, начиная с текущей позиции курсора.
movetext(int x0, int y0, int x1, int y1, int xd, int yd);
Переносит окно, заданное координатами, в указанное место.
putch(int ch);
Выводит символ в текущей позиции курсора.
puttext(int x0, int y0, int x1, int y1, void* source);
Выводит на экран текстовое окно. Символы и атрибуты располагаются в буфере, адрес которого записан в source.
gettext(int x0, int y0, int x1, int y1, void* dest);
Записывает информацию из текстового окна в dest.
highvideo(); normvideo(); lowvideo();
Задают соответственно использование повышенной, нормальной или пониженной яркости для последующего вывода символов на экран.
textattr(int attr)
Задаёт атрибут текстового окна.
textcolor(int color);
Задаёт цвет символов.
textbackground(int color);
Задаёт цвет фона символов.
Текст программы.
#include <CONIO.H>
#include <DOS.H>
// ФИО 9300, вариант 7
int main() {
char *bgnames[] = {"Чёрный", "Тёмно-синий", "Тёмно-зелёный", "Бирюзовый", "Тёмно-красный", "Фиолетовый", "Оранжевый", "Серый"};
char *fgnames[] = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Pink", "Yellow", "White"};
int i, j;
union REGS regs;
regs.h.ah = 7; // код функции
regs.h.al = 1; // число строк
regs.h.cl = 19; // x0
regs.h.ch = 7; // y0
regs.h.dl = 59; // x1
regs.h.dh = 17; // y1
clrscr();
window(20, 8, 60, 18);
for (i = 0; i <= 7; i++) {
for (j = 0; j <= 15; j++) {
regs.h.bh = (i << 4) | j;
int86(0x10, ®s, 0);
textattr((i << 4) | j);
gotoxy(1, 1);
cprintf("%s фон | %s Foreground", bgnames[i], fgnames[j]);
delay(900);
}
}
getch();
return 0;
}
Структурная схема аппаратных средств.
Рисунок 1. Структурная схема аппаратных средств.
Вывод.
Была изучена работа с видеосистемой в текстовом режиме, освоены приёмы использования цветовой палитры, написана демонстрирующая эти приёмы программа.