Лабораторная работа 1. Лабораторная работа 1 Драйвер экрана по дисциплине Эксплуатация и развитие компьютерных сетей и систем
Скачать 61.5 Kb.
|
Министерство образования и науки Российской Федерации ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра промышленной электроники (ПрЭ) Лабораторная работа № 1 «Драйвер экрана»по дисциплинеЭксплуатация и развитие компьютерных сетей и систем.Выполнил: Студент ФДО Специальность: 210106 « » 2013г. Проверил: 2013 Введение Цельработы: требуется произвести написание и отладку программ драйвера экрана. В результате отладки главная программа (имитатор прикладной программы) должна выполнить с помощью драйвера экрана вывод строки символов, состоящей из нескольких слов и управляющих символов "Перевод строки" и "Возврат каретки". Выполнение работы Программа драйвер экрана – это управляющая программа, способная анализировать поток входных символов, и в соответствии с номером символа может производить необходимые действия. При этом весь поток можно разделить на 2 типа: Специализированные символы. Те символы, на которые программа будет реагировать как на некоторую команду. Обычные символы. Те символы, которые программа будет просто выводить на экран. В нашем случае, специализированными являются символы перевода строки #10 (из таблицы ASCII) и возврата каретки #13 (из таблицы ASCII). Принцип работы программы драйвера заключается в том, что мы формируем поток входных данных, например, как символьный массив данных с произвольным набором символов, среди которых встречаются символы #10 и #13. Программа анализирует каждый символ и в соответствии с этим предпринимает конкретные действия: либо выполняет перевод строки и установку курсора в начало строки, либо просто выводит символ на экран. Помимо работы с символами программа – драйвер должна уметь выполнять форматирование текста и его установку в нужную позицию на экран. В нашей программе установим произвольный текст примерно по центру рабочего окна программы и зададим цвет шрифта – зеленый. Затем для наглядности поменяем цвет символов на синий и красный (см. рис. 1-3). Листинг 1 – Видеодрайвер. Program Video_Driver; {Название программы} VAR stroka: string; {Входная строка символов} i:byte; j:integer; Begin {Сформируем входную строку символов} for j:=1 to 20 do stroka:=stroka+#7; stroka :=stroka +#10+#13; for j:=1 to 30 do stroka:=stroka+#32; stroka :=stroka +#32+#32+#7+#32+#32+' Video Driver '+#7+#10+#13; for j:=1 to 32 do stroka:=stroka+#32; for j:=1 to 20 do stroka:=stroka+#7; ASM MOV AH,0H {Установим текстовый видеорежим} MOV AL,02H {Видеорежим 80x25 символов} INT 10H {Вызываем прерывание BIOS} MOV AH,02 {Запрос на установку курсора} MOV BH,00 {Зададим номер видеоэкрана} MOV dx,0820H {Установка начальных координат} INT 10H MOV AL,255 MOV i, AL {Активируем счетчик} @WRITE: {Цикл записи символов на экран} INC i {Увеличиваем счетчик на 1} } MOV BL, i {Номер смещения в массиве} MOV AL,[bx+offset+stroka+1] {Запомним номер символа выводимого на экран} CMP AL,10 JNE @START {Если символ перевода строки, то перейдем на выполнение @PEREVOD, иначе на @START} @PEREVOD: {Перевод на следующую строку} MOV AH,02 {Установка курсора} MOV BH,00 {На странице номер 0} INC DH {Увеличиваем номер строки на 1} INT 10H CMP i,127 {Берем следующий символ} JNE @WRITE {Повторяем запись} @START: {Дополнительная проверка символа} CMP AL,13 {Если это не символ возврата каретки, то перейдем к выполнению @START2} JNE @START2 {Перейдем к выполнению @LINE} @LINE: {Установка курсора в начало строки} MOV AH,02H {Запрос на установку курсора} MOV BH,00H {На странице номер 0} MOV dl,00H {Установка курсора в столбец 0} INT 10H CMP i,127 {Запись следующего символа} JNE @WRITE @START2: {Если этот символ не специальный} MOV AH,02 {Установим курсор} MOV BH,00 INT 10H MOV AH,09H {Запросим вывод символа на экран} MOV BH,0H {На странице 0} MOV BL,0AH {Установим цвет символа} MOV cx,01H {Количество повторов вывода символа} INT 10H INC Dl {Двигаем курсор} CMP i,127 {Запись следующего символа} JNE @WRITE MOV AH,00H {Пауза для отображения надписи} INT 16H END; END. Рис. 1 - Цвет символов номер 0x0AH Рис. 2 - Цвет символов номер 0x01H Рис. 3 - Цвет символов номер 0x0CH Заключение В ходе выполнения лабораторной работы были изучены принципы реализации драйвера экрана, была разработана программа-драйвер на языке ассемблера, которая способна анализировать входной массив строк и производить такие действия как перевод строки и возврат каретки (перевод на начало строки). |