Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по Организации ЭВМ и систем.doc
Скачиваний:
12
Добавлен:
06.05.2019
Размер:
290.82 Кб
Скачать

Лабораторная работа 7 Дисплей и адаптер (вывод символа и строки)

Программирование дисплейного адаптера будет использоваться при выполнении лабораторной работы на ассемблере,

поэтому приведем краткую справочную информацию.

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

Этот режим имеет номер 3 (для функции переключения режимов int 10h).

Имеется возможность использовать также режим с 40 символами в строке-режим номер 1.

Изображение размещается в видеобуфере с началом по адресу B800h:0000h.

Каждому символу на экране соответствует два байта – с четным и нечетным адресом.

Байты с четными адресами (0, 2, 4…) содержат ASCII-коды отображенных на экране символов,

байты с нечетными адресами (1, 3, 5…) – их цветовые атрибуты, а именно

цвет символа, цвет фона (последний задается для каждого знакоместа отдельно, а не сразу для всего экрана)

и признак аппаратного мерцания (если он установлен, символ высвечивается и гаснет с частотой примерно два раза в секунду).

Формат атрибутного байта следующий:

7 6 5 4 3 2 1 0

F R G B I R G B

<----------ФОН---------->|<--------СИМВОЛ------>

Здесь биты R, G, B означают включение красного, зеленого, синего цветовых компонентов соответственно,

I (Intensity) – признак повышенной яркости,

F (Flash) – атрибут мерцания.

Очевидно, что можно получить 16 цветов символа, 8 цветов фона, наличие или отсутствие мерцания.

Например, байт 00001010 задает ярко-зеленый символ на черном фоне,байт 10010110 – желтый (R+G) мерцающий символ на синем фоне.

Из всех графических режимов обратим внимание только на наиболее простой – режим 320х200х256.

Это означает разрешающую способность 320 точек (пикселов) по оси Х, 200 пикселов по оси Y, 256 цветов.

Этот режим имеет номер 13h (для функции переключения режимов). Организация видеопамяти (видеобуфера) здесь предельно проста:

каждому пикселу соответствует свой байт, и эти байты размещаются линейным образом, начиная с адреса A000h:0000h.

В дисплейном адаптере существуют также так называемые регистры палитры и регистры ЦАП,но, если не менять из содержимое, то можно считать,

что значения байтов видеопамяти (каждый байт=0…255) однозначно определяют цвета соответствующих пикселов на экране.

Отметим, что первые 16 цветов (значения 0…15) совпадают с цветами для текстового режима.

Смещение в видеобуфере (offset), соответствующее значению пиксела с координатами (X, Y), можно вычислить по очень простой формуле:

offset = 320*Y + X.

Переключение режимов адаптера.

В составе BIOS (Base Input-Output System) компьютеров типа IBM PC существует очень простая функция, предназначенная для этого.

В регистр AH следует записать 0, в регистр AL – номер режима (в частности, 1, 3, 13h, упомянутые выше) и затем выполнить команду Int 10h.

Эта команда вызывает программное прерывание номер 10h, которое соответствует функциям обслуживания дисплейного адаптера.

При отработке функции переключения режимов происходит также очистка экрана дисплея.

Пример: вывод символа в текстовом режиме.

.MODEL small

.stack 100h

.code

start:

MOV AH, 0

MOV AL, 3

INT 10H

PUSH DS

MOV AX, 0B800h

MOV DS, AX

MOV BX, 0

MOV CX, 65

MOV [BX], CX

MOV byte ptr [BX+1],01001010b

POP DS

mov ax,0C07h

int 21h

mov ax, 4C00h

int 21h

end start