Смекни!
smekni.com

Микропроцессорные системы (стр. 5 из 6)


№ Варианта F1, кГц К1 К2 Клавиша выхода
1 5,5 A 0 Insert

Основная программа

Программа перехватывает прерывание 09h. По нажатию клавиши C генерирует звук частотой 9,5 кГц, а по нажатию клавиши 2 выключает звук. По клавише Scroll lock – выход из программы.

stacsegment

db 64 dup (0)

ends

data segment

old_offs dw ?

old_seg dw ?

msg db

ends

code segment

assume ds:data, cs:code, ss:stac

Start: mov ax,data

mov ds,ax

mov es,ax

mov ax,0

mov es,ax

mov ax,es:[0024h]

mov old_offs,ax

mov ax,es:[0026h]

mov old_seg,ax

cli

mov word ptr es:[0024h], offset my_int

mov word ptr es:[0026h], seg my_int

sti

m: mov ah,02h

int 16h

and al,10000000b

jnz m_end

jmp m

m_end:

cli

mov ax,old_offs

mov es:[0024h]

mov ax,old_seg

mov es:[0026h]

sti

mov ax,4C00h

int 21h

my_int proc far

in al,[60h]

cmp al,1eh

jnz m1

mov bx,00d9h

mov al,0beh

out [43h],al

mov al,bl

out [42h],al

mov al,bh

out [42h],al

in al,[61h]

or al,03

out [61h],al

jmp m2

m1: cmp al,0bh

jnz m2

in al,[61h]

and al,0fch

out [61h],al

m2:

mov ah,09h

lea dx,msg

int 21h

jmp dword ptr ds:old_offs

my_int endp

ends

END Start

ENDStart


Рисунок 3.3 – Результат работы программы


4 ПРИНЦИПЫ РАБОТЫ ВИДЕОСИСТЕМЫ ПЭВМ

Видеосистема персонального компьютера, предназначенная для формирования изображений, содержит две составные части: видеоадаптер и монитор. Основу видеоадаптера составляют специализированные схемы для генерирования электрических сигналов, управляющих монитором.

Все видеосистемы содержат электронные компоненты, формирующие сигналы синхронизации, цветности и управляющие генерированием текстовых символов. Кроме того, во всех видеосистемах имеется видеобуфер. Он представляет собой область оперативной памяти, которая предназначена только для хранения текста или графической информации, выводимой на экран монитора. Наиболее распространенными типами видеоадаптеров являются адаптер VGA и адаптер SuperVGA.

Центральным устройством в управлении видеомонитором является контроллер электронно-лучевой трубки(ЭЛТ). В ПЭВМ применяются программируемые контроллеры, позволяющие задать все основные параметры развертки изображения на экране изображения на экране.

Режим работы видеомонитора характеризуется следующими понятиями:

- вертикальным разрешением (количество строк растра на экране);

- горизонтальным разрешением (количеством символов или точек в строке);

- представлением данных в видеопамяти;

- атрибутами вывода, задающими цвет, мерцание и т.п.

Параметры развертки заносятся в определенные регистры контролера ЭТЛ.

Например, адаптеры MGA и CGA содержат контроллер ЭЛТ Motorola 6845, имеющий программируемые регистры, показанные в таблице 4.1.


Таблица 4.1 – Программируемые регистры

Регистр Наименование Описание
R0 Общая длительность строки (horizontaltotal) Время вывода строки растра в символьных тактах.
R1 Ширина кадра (horizontal displayed) Количество символов в строке
R2 Позиция горизонтальной синхронизации (horizontalsyncposition) Начало горизонтальной синхронизации в символьных тактах.
R3 Ширина синхронизации (sync width ) Деятельность синхронизации (Младшая тетрада - вертикальной)
R4 Размер кадра(vertical total) Общее кол-во строк в кадре
R5 Вертикальное выравнивание (vertical adjust) Поправка для частоты 50 или 60Гц
R6 Высота кадра(vertical displayed) Количество строк изображения в кадре
R7 Позиция вертикальной синхронизации (verticalsyncposition) Начало вертикальной синхронизации в символьных тактах
R8 Биты 4-5: режимрасслоения (interlace mode); биты 6-7: сдвиг (skew)
R9 Макс. Число строк растра Количество строк изображения в кадре
R10 Начало курсора Начальная строка курсора
R11 Конец курсора Конечная строка курсора
R12R13 Начальный адрес видеопамяти Старший байтМладший байт
R14R15 Позиция курсора Старший байтМладший байт
R16R17 Позиция светового пера Старший байтМладший байт

Следует учитывать, что самостоятельное программирование контроллера ЭЛТ чревато физическим разрушением видеомонитора, поэтому не следует прибегать к нему, если вы не вполне понимаете принципы расчета параметров раскрутки. Все необходимые действия по инициализации дисплея обычно выполняются BIOS, поэтому реальная необходимость в непосредственном программировании контроллера ЭЛТ возникает крайне редко.


4.1 Адресация и режимы работы адаптера CGA

Цветной графический адаптер CGA (ColorGraphicsAdapter) – это графический видеоконтроллер среднего разрешения. Для него зарезервированы порты ввода-вывода 3D0h – 3DFh, имеющие назначение, показанные в таблице 4.2.

Таблица 4.2 – Порты ввода/вывода

Порт Операция Описание
3D4h запись регистр индекса ЭЛТ. Используется для выбора регристра контроллера ЭЛТ. Для записи регистра ЭЛТ Rn нужно выполнить команды: out 3D4h,n и 3D5h,данные (n - номер регистра)
3D5h запись\чтение Регистр данных ЭЛТ. Позволяет записывать все регистры ЭЛТ и читать регистры R12-R17
3D8h запись Регистр режимов дисплея.
3D9h запись Регистр выбора цветов. Выбор палитры задает набор основных цветов в графическом режиме. Палитра 0 - зеленый\красный\коричневый, палитра 1 - бирюзовый\сиреневый\светло-серый
3DAh чтение Регистр состояния дисплея.
3DBh запись\чтение Вывод любого байта выключает триггер светового пера.
3DCh запись\чтение Вывод любого байта включает триггер светового пера.

Рисунок 4.1 - Регистр режимов работы дисплея.


Рисунок 4.2 - Регистр работы дисплея

4.2 Режим работы дисплея

Все видеосистемы персональных компьютеров, за исключением адаптера MDA, могут работать в двух основных режимах – текстовом и графическом. В текстовом режиме экран разделяется на отдельные символьные позиции, в каждой из которых выводится один символ.

В видеобуфере каждой символьной позиции соответствует два байта . Байт с четным адресом содержит ASCII-код символа, а соседний байт с большим нечетным адресом содержит атрибуты последовательности , которая отображается на прямоугольные координаты (столбец, строка) экрана.

В двух наиболее распространенных форматах текстового режима не экране формируется 25 текстовых строк , содержащих по 40 или 80 символов. Таким образом, емкость видеобуфера, необходимая для заполнения экрана, составляет 2000 байт (25 строк * 40 символов *2 байта) или 4000 байт ( 25 строк * 80 символов * 2 байта ). Эту область называют страницей. Если емкость видеобуфера превышает размер одной страницы, в нём можно организовывать несколько страниц.

Стартовый адрес видеобуфера для текстовых режимов адаптеров EGA, MCGA, VGA, SuperVGA и с графическим сопроцессором одинаков – В800:0000.

Соответствие цветов атрибутам зависит от типа видеоадаптера. Структура байта атрибутов для CGA адаптера изображена на рисунке 3. таким образом, цвет фона может варьироваться от 0 до 7, а цвет символа с учетом яркости – от 0 до 0Fh. Значение атрибута задается формулой: 16*(цвет фона) + цвет символа (плюс 128 для мерцания символа).

При использовании CGA адаптера и монохромного дисплея цвет символа и фона передается яркостью символа и фона соответственно.

Рисунок 4.3 - Структура байта атрибутов для CGA адаптера

(0,0) (0,39) или (0,79)

X

Экран

(24,0) (24,39) или (24,79)

Y

Рисунок 4.4 – График CGA адаптера


Таблица 4.3 – Задание цвета в адаптере CGA

Номер Цвет Номер Цвет
0 Черный 8 Серый
1 Синий 9 Ярко-синий
2 Зеленый А Ярко-зеленый
3 Бирюзовый В Голубой
4 Красный С Алый
5 Сиреневый D Розовый
6 Коричневый E Желтый
7 Светло-серый F Белый

Видеопамять CGA располагается в адресах ОЗУ B8000h – BFFFFh. CGA имеет 2 типа текстовых режимов: 25 строк по 40 символов и по 80 символов в строке. В режимах 25 х 40 одна страница занимает 800h байтов, поэтому видеопамять состоит из 8 страниц. В режимах 25 х 80 страница занимает 1000h байтов и видеопамять состоит из 4 страниц.

Адрес кода символа в текстовых режимах равен:

B800h: n*P+m*L+2*C, адрес атрибута на единицу больше. Здесь L – номер строки (0 – 24), C – номер столбца (0 – 79 или 0 – 39), m = 2 * количество столбцов режима, n = 800h при m=80 и 1000h при m=160, Р – номер страницы (0-7 или 0-3).

CGA имеет два типа графических режимов: цветной режим, имеющий разрешение 320 точек по горизонтали на 200 точек по вертикали, и черно-белый режим с разрешением 640 точек на 200 точек. В режиме 320 х 200 каждый пиксель задается двумя битами, кодирующими его цвет; в режиме 620 х 200 цвет пикселя задается одним битом (белый/черный). В графических режимах один экран требует 16К видеопамяти, поэтому имеется одна страница видеопамяти, которая размещается в областях B8000h – BFFFFh. Эта страница расслоена на две области: область с адреса B8000h содержит пиксели, имеющие четные номера строк; область с адреса ВА000h содержит пиксели из нечетных строк. Поэтому адрес байта, содержащего точку с координатами (X,Y), равен в цветном режиме B800h : 2000h * (Y % 2) + 80 * int(Y/2) + int(X/4), а номера соответствующих битов в этом байте равны 7 – 2 * (X % 4) И 6 – 2 * (X %4). Здесь Х – горизонтальная позиция точки (0 – 319), Y – ее вертикальная позиция (0 – 199), знак % обозначает остаток от деления одного числа на другое.