№ Варианта | 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), знак % обозначает остаток от деления одного числа на другое.