Коды цветов стандартной палитры — КиберПедия 

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Коды цветов стандартной палитры

2023-01-01 23
Коды цветов стандартной палитры 0.00 из 5.00 0 оценок
Заказать работу

Код Цвет Код Цвет
0h Чёрный 8h Серый
1h Синий 9h Голубой
2h Зелёный 0Ah Салатовый
3h Бирюзовый 0Bh Светло-бирюзовый
4h Красный 0Ch Розовый
5h Фиолетовый 0Dh Светло-фиолетовый
6h Коричневый 0Eh Жёлтый
7h Белый 0Fh Ярко- белый

 

В текстовом режиме 80х25 (80 столбцов, 25 строк) двухбайтовые коды символов записываются в видеобуфер в том порядке, в каком они должны появиться на экране: первые 80*2 байт соответствуют первой строке экрана, вторые 80*2 байт – второй и т.д. При этом переход на следующую строку экрана определяется не управляющими кодами возврата каретки и перевода строки, а размещением кода в другом месте видеобуфера. Для того чтобы из программы получить доступ к видеобуферу, надо занести в один из сегментных регистров данных сегментный адрес видеобуфера. После этого, задавая те или иные смещения, можно выполнить запись в любые места (ячейки) видеобуфера. Вычислить смещение ячейки в координатах "строка-столбец" (row, clm) можно так:

VidAdd r = (row *160) + (clm *2)

Для установки текстового режима 80х25 (режим №3) можно использовать 0-ю функцию прерывания видеосервиса 10h:

mov ah,0;номер функции

mov al,3;номер режима

int 10 h;вызов прерывания видеосервиса

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

 

mov ax,0B800h

mov es,ax    

Заметьте, что сегментный регистр нельзя инициализировать напрямую, а только с использованием промежуточного регистра общего назначения

Затем необходимо использовать какой-либо индексный или базовый регистр для указания смещения, по которому будет записываться или считываться информация, например для чтения символа из верхнего левого угла в регистр AL можно написать:

mov si,0

mov al,es:[si]

 

И соответственно для записи в верхний левый угол латинской буквы А (код 41h, см таблицу 2) красным цветом можно написать:

mov si,0  ;задание смещения символа в видеобуфере

mov al,41 h;задание кода символа

mov es:[ si ], al;вывод символа

inc si   ;увеличение si на единицу

mov ah,4 h;красный цвет символа, черный фон

mov es:[ si ], al;вывод атрибутов символа

 

С учетом того, AX – 2-х байтный регистр, включающий AH и AL (байтные регистры) этот код можно переписать следующим образом:

mov si,0  ;задание смещения левого верхнего         ;угла

mov ax,0441 h;задание атрибутов и кода символа

mov es:[ si ], ax;вывод атрибутов и кода символа в     ;левый верхний угол

 

С учетом всего выше сказанного полный исходный текст для вывода буквы А на экран в левом верхнем углу будет выглядеть следующим образом:

.model small

.386

.data       ;сегмент данных

.stack      ;сегмент стека

.code       ;сегмент кода

main proc   ;точка входа в главную функцию

mov ah,0   ;номер функции установки;видеорежима

mov al,3   ;номер видеорежима (текстовый;80х25)

int 10h    ;вызов прерывания видеосервиса

mov ax,0b800h;загрузка сегмента видеобуфера

mov es,ax  ;загрузка сегмента видеобуфера

mov si,0   ;установка смещения символа в;буфере

mov ax,0441h;загрузка кода символа и;атрибута

mov es:[si],ax;вывод символа на экран

mov ah,0   ;функция ожидания ввода символа

int 16h    ;для организации задержки

mov ax,4c00h;номер функции завершения;программы

int 21h    ;завершение программы

main endp   ;конец главной функции

end main    ;точка входа в программу

 

Кодовая таблица ASCII (таблица 2) представляет собой полный набор символов, доступных в операционной системе DOS.

                                                                                         Таблица 2

Задания к выполнению лабораторной работы выдаются преподавателем непосредственно перед занятием

Примерный вариант задания

Разработать программу, выполняющую прорисовку на экране заданной фигуры в текстовом режиме 80х25 с использованием символов псевдографики.

 

Содержание отчета

1. Тема и цель работы.

2. Задание на лабораторную работу.

3. Блок-схема программы.

4. Листинг программы.

5. Выводы по работе.

 

Контрольные вопросы

1. Из каких этапов состоит разработка программы на ассемблере?

2. Какие программы используется для компиляции ассемблерного кода?

3. Что такое ассемблирование программы?

4. Что такое компоновка программы?

5. Что такое видеобуфер?

6. Какова структура видеобуфера в текстовом режиме?

7. Как задается цвет фона и цвет символа?


Лабораторная работа № 2

«ПРОГРАММИРОВАНИЕ ТЕКСТОВОГО ВИДЕОБУФЕРА. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ. ОРГАНИЗАЦИЯ ЦИКЛОВ»

 

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

 


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.