Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Labs / 3_Video / Lab3

.pdf
Скачиваний:
21
Добавлен:
16.04.2013
Размер:
240.67 Кб
Скачать

1

Лабораторная работа по курсу "Организация ЭВМ и систем"

Программирование видеопамяти

Цель работы: изучить режимы адресации операндов; познакомиться с прямым программированием видеопамяти.

Видеопамять компьютера делится на текстовую и графическую. Текстовая видеопамять включает 8 видеостраниц и занимает в адресном пространстве компьютера 32 Кбайт, начиная с адреса B8000h (для цветных мониторов). Каждая страница занимает 4 Кбайт. При включении компьютера активной становится видеостраница 0. Смена видеостраниц осуществляется вызовом функции 05h прерывания 10h BIOS.

На рис. 1 показана организация текстовой видеопамяти. Любой код, записываемый в видеопамять, сразу же отображается на экране в виде цветного символа на одном из знакомест. Каждый символ занимает в видеопамяти поле из 2 байт. Младшие (четные) байты всех полей отводятся под коды ASCII отображаемых символов, старшие (нечетные) байты - под их атрибуты (рис. 1, а).

Адрес: B800h:00

B800h:01

B800h:02

B800h:03

Номер

7

6 5 4

3 2

1 0

 

 

 

 

 

 

бита:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Символ

Атрибут

 

Символ

Атрибут

 

B

 

 

back

 

 

 

 

H

 

 

 

text

 

 

 

 

Знакоместо 0

Знакоместо 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(а)

 

 

 

 

 

 

 

 

 

 

(б)

 

 

 

 

 

 

 

Рис. 1. Текстовая видеопамять: а) логическая организация; б) формат байта атрибутов

 

 

 

 

 

 

Цвет символа и фона в байте атрибутов задается группами из трех разрядов: для фона и для символа (обозначены как back и text на рис. 1, б). Каждый из разрядов связан с одним из трех основных цветов: красным, зеленым, синим. Смешение основных цветов дает 8 различных комбинаций (цветов). Третий разряд байта атрибутов (обозначен буквой H) управляет интенсивностью цвета. Этот бит относится только к цвету символа и с тремя другими разрядами

обеспечивает 16 цветов для символа:

 

 

0h

Черный

8h

Серый

1h

Синий

9h

Голубой

2h

Зеленый

0Ah

Салатовый

3h

Бирюзовый

0Bh

Светло-бирюзовый

4h

Красный

0Ch

Розовый

5h

Фиолетовый

0Dh

Светло-фиолетовый

6h

Коричневый

0Eh

Желтый

7h

Белый

0Fh

Ярко-белый

Самый старший разряд (обозначен буквой B) управляет мерцанием символа. Если в нем установлена единица, то символ будет мигать с частотой около 2 Гц.

Двухбайтовые коды символов записываются в видеопамять в том порядке, в каком они должны появляться на экране: первые 80 2-байтовых полей соответствуют первой строке экра-

на, вторые 80 полей - второй строке и т.д. При формировании изображений непосредственно

в видеопамяти все управляющие коды ASCII теряют свои управляющие функции и отображаются в виде соответствующих им символов. Переход на следующую строку экрана определяется размещением символов в позициях видеопамяти, соответствующих этой строке.

Для того чтобы из программы получить доступ к видеопамяти, надо занести в один из сегментных регистров данных сегментный адрес 8B00h. После этого, задавая те или иные сме-

2

щения, можно выполнять запись в любые места видеопамяти. Пример. Прямая запись в видеопамять. Фрагмент программы

mov

AX,0B800h

; (1)Сегментный адрес видеопамяти

mov

ES,AX

; (2)Загрузить его в ES

mov

BX,0

; (3)Смещение к началу экрана

mov

SI,80*2*12+40*2

; (4)Смещение к центру экрана

mov

DI,80*2*25-2

; (5)Смещение к началу последней строки

mov

word ptr ES:[BX],3130h

; (6)Вывод ноля

mov

word ptr ES:[SI],0F01h

; (7)Вывод рожицы

mov

word ptr ES:[DI],0E40Fh

; (8)Вывод звездочки

mov

AH,01h

; (9)Приостановить программу

int

21h

; (10) для наблюдения результата

1.Порядок выполнения работы

1.Напишите программу number.asm: выведите в середину 12-ой строки номер своего компьютера желтыми буквами на красном фоне, установив бит мерцания.

2.При помощи отладчика определите и запишите в отчет, какому цвету фона и символа соответствует байт атрибутов по умолчанию, устанавливаемый при загрузке компьютера.

3.Выполните Пример. Какие режимы адресации использованы в программе? Запишите их в отчет с указанием номеров строк.

4.Выпишите код команды 6 и расшифруйте его в отчете. Замените регистр ES на DS. Как изменился код команды?

5.Замените в команде 6 сегмент ES на FS или GS. Поясните причину появления сообщения об ошибке. Как ее исправить?

6.Модифицируйте код Примера так, чтобы использовать другие режимы адресации.

7.*Напишите программу, которая при нажатии клавиши (в цикле) меняет байт атрибутов для строки выводимого текста.

2.Требования к отчету

1.При подготовке к лабораторной работе (дома) запишите в конспект: формат байта атрибутов, коды цветов в 16-цветной палитре, законченный текст программы number.asm для своего варианта с комментариями. Законченная программа включает правильный вход в программу и выход из программы в ОС (например, по образцу лабораторной работы №2).

2.При выполнении работы занесите в отчет результаты выполнения экспериментов и ответы на вопросы из пп. 2-6 "Порядка выполнения".

3.Студент должен знать ответы на следующие вопросы:

Вопросы

1.Какие режимы адресации операндов существуют в процессоре Pentium?

2.В чем разница между режимами адресации для 16-ти и 32-разрядных процессоров Intel?

3.Можно ли в реальном режиме использовать 32-разрядные регистры а) для хранения операндов; б) для адресации операндов?

4.Можно ли и почему в Примере использовать вместо регистра ES регистр DS?

5.Можно ли в Примере не задавать в директиве assume сегментный регистр для сегмента данных? Почему?

Источники информации

1. Рудаков П.И., Финогенов К.Г. Язык ассемблера: уроки программирования. - М.: ДИАЛОГ-

МИФИ, 2001. (Статьи 10, 24)

---------------------------------------------------------------------------------------------------

© Лабораторная работа подготовлена Л.В. Илюшечкиной.

* Необязательное задание. Оценивается дополнительными пунктами при условии, что студент полностью выполнил остальные задания.