- •Казанский государственный технический университет
- •А. Н. Борисов практикум по внешним интерфейсам персональных компьютеров
- •Введение
- •Лабораторная работа № 1 интерфейс динамика в пк
- •Лабораторная работа № 2 функционирование видеопамяти в текстовом режиме
- •Организация видеопамяти
- •Лабораторная работа № 3 формирование изображения в видеоадаптере vga в графическом режиме
- •Лабораторная работа № 4 внешний параллельный интерфейс “centronics”
- •Организация интерфейса
- •Лабораторная работа № 5 внешний последовательный интерфейс “rs-232c”
- •Выполнение задания 1
- •Инструкция преподавателю
- •Список литературы
- •Содержание
Организация видеопамяти
В текстовом режиме в видеопамяти может храниться до 4 видеостраниц или экранов с номерами от 0 до 3. Переключение видеостраниц (т.е. вывод их содержимого на экран) осуществляется средствами BIOS. Большинство программ, в то числе и DOS, работают с 0 видеостраницей. В каждой видеостранице помещается равно один экран в 25 строк по 80 символов в каждой, причем каждый символ отображается двумя байтами - байтом с кодом символа и байтом с атрибутом символа.
Порядок размещения этих кодов показан на рис. 2.3. Обозначим: адрес первой ячейки - SEGM:0000H, где SEGM-двухбайтовое значение сегмента видеопамяти; С0 и А0 -соответственно код символа в строке 0 и атрибут символа в строке 0 и т.д. Для формирования текстового изображения на экране из видеопамяти последовательно считывается информация, начиная с адреса SEGM:0000H. Считывание осуществляется непрерывно и циклически. Этот процесс называется сканированием памяти. По коду символа из знакогенератора выбирается соответствующая матрица для формирования изображения символа на экране. Первый символ (символ с номером С0 в строке 0) появляется в левом верхнем углу экрана с атрибутом А0. Следующие 2 байта видеопамяти изображают следующий символ справа от него и т. д. Значение смещения (SM) ячейки видеопамяти для любого символа, размещаемого в произвольной позиции (NS-строка, NK-колонка) на экране определяется по формуле:
SM = 2 * (NS * 80 + NK) .
Видеостраница 0
Строка 0
SEGM:0000
-
C0
A0
C1
A1
. . . . . . . . . . . . . . .
C79
A79
Строка1
-
C0
A0
C1
A1
. . . . . . . . . . . . . .
C79
A79
. . . . . . . .
. . . . . . . .
Строка 24
-
C0
A0
C1
A1
С79
A79
Рис.2.3. Размещение информации в видеопамяти в текстовом режиме
Для видеосистем ПК разработан ряд стандартных видеорежимов. При работе в оболочке Far manadger видеосистема по умолчанию устанавливается в текстовый цветной режим № 3 с количеством цветов равным 16 и количеством знакомест 80 х 25. Это режим работы видеоадаптера CGA, для которого видеопамять имеет емкость 16 Кбайт и начинается с адреса В800:0000.
Обычно в программах, работающих напрямую с видеопамятью, регистр DS либо ES микропроцессора загружается значением сегмента видеопамяти, а остальная часть программы работает со смещениями в видеопамяти.
Задание на лабораторную работу
В этой лабораторной работе необходимо написать программу, которая бы прямым доступом в видеопамять реализовала бы эффект "бегущей буквы" по экрану, например, движение буквы по верхней строке экрана.
Алгоритм этой программы может быть, к примеру, следующий:
1. Инициализация ES, DI, CX.
2. Заполнение 0 страницы видеопамяти одинаковыми символами (например, кодом буквы "А" - 128 (80h) и одинаковыми атрибутами, причем такими, что бы цвет символа в них совпадал бы с цветом фона, т.е. символ был невидимым. Это легче всего сделать с помощью команды STOSW (см. приложение 2.1). Коды некоторых символов приведены в приложении 2.2.
3. У символа на строке 0 и колонке 0 меняем атрибут на любой видимый, делаем задержку, после нее изменяем атрибут у следующего символа в строке и возвращаем старое значение атрибута предыдущему символу, т.е. гасим его. Эти действия продолжаем до 79 колонки 0-й строки.
4. Выход из программы.
Таким образом, просто "зажигая" и "гася" записанные в видеопамять байты символов, мы получаем эффект бегущей по экрану буквы.
Ваpианты заданий на лабоpатоpную pаботу :
Ваpиант 1. Движение символа по периметру экрана, начиная с позиции (0,0) слева напpаво.
Ваpиант 2. Движение символа по периметру экрана, начиная с позиции (0,0) сверху вниз.
Ваpиант 3. Движение символа по периметру экрана, начиная с позиции (24,79) справо налево.
Ваpиант 4. Движение символа по периметру экрана, начиная с позиции (24,0) слева напpаво.
Ваpиант 5. Движение символа по периметру прямоугольника с позициями вершин (0,40), (24,40), (24,79), (0,79).
Ваpиант 6. Движение символа по периметру прямоугольника с позициями вершин (10,0), (24,0), (24,50), (10,50).
Ваpиант 7. Движение символа по периметру прямоугольника с позициями вершин (0,30), (15,30), (15,79), (0,79).
Ваpиант 8. Движение символа по периметру прямоугольника с позициями вершин (0,0), (0,40), (20,40), (20,0).
Во время отладки программы необходимо поэкспериментировать с цветом символа и цветом фона.
Приложение 2.1
Некоторые команды языка Ассемблера
Команда STOSB - запомнить байт и STOSW - запомнить слово.
Команды пересылают байт (STOSB) или слово (STOSW) из регистров AL (STOSB) или AX (STOSW) в память по адресу в ES:DI. После пересылки содержимое DI либо увеличивается (при DF=0, установка по команде CLD) на 1 (STOSB) или на 2 (STOSW), либо уменьшается (при DF=1, STD ) на 1 или 2.
Перед командой STOSB может стоять префикс повторения REP.
Приложение 2.2
Таблица кодов символов ASCII
Коды символов в таблице представлены в шестнадцатиричном коде. В таблице приведены только коды некоторых символов цифр, букв в диапазоне кодов 30Н - 6FН.
Код Символ Код Символ Код Cимвол Код Символ
30 0 40 @ 50 P 60
31 1 41 A 51 Q 61 a
32 2 42 B 52 R 62 b
33 3 43 C 53 S 63 c
34 4 44 D 54 T 64 d
35 5 45 E 55 U 65 e
36 6 46 F 56 V 66 f
37 7 47 G 57 W 67 g
38 8 48 H 58 X 68 h
39 9 49 I 59 Y 69 i
3А : 4A J 5A Z 6A j
3B ; 4B K 5B [ 6B k
3C < 4C L 5C \ 6C l
3D = 4D M 5D ] 6D m
3E > 4E N 5E ^ 6E n
3F ? 4F O 5F _ 6F o
