Характеристика атрибута символа у відеобуфері

Все, що зображено на моніторі - графіка, текст - одночасно присутні в пам'яті, вбудованій у відеоадаптер. Для того щоб зображення з'явилося на моніторі, воно повинне бути записане в пам'ять відеоадаптера. Для цього відводиться область пам'яті, що починається з логічної адреси B800h:0000h (для текстових режимів) і що закінчується адресою B800:FFFFh. Дана область розбивається на 8 секторівпо числу відеосторінок (4 КБайта на сторінку). Все, що програма, що виконується заносить у відеобуфер, відповідний активній сторінці, негайно відображається на екрані. У текстових режимах для зображення кожного символа відводиться 2 байти: байт з ASCII - кодом символа і байт з його атрибутом. При цьому за адресою B800h:0000h знаходиться байт з кодом символа (лівий верхній кут екрана), а в B800h:0001h - атрибут цього символа; B800h:0002h - код другого символа, а в B800h:0003h - атрибут другого символа. Взагалі при формуванні зображення безпосередньо в відеобуфері, в обхід програмам DOS і BIOS, всі керуючі коди ASCII втрачають свої керуючі функції і відображаються у вигляді відповідних символів. Структура байта атрибутів приведена на рис. 1.

З рис. 1 випливає, що кожний символ може приймати будь-який з 16 можливих кольорів, щовизначаються поєднанням молодших 4-х бітів. Біти 4 - 6 байта атрибутів задають колір фону під даним символом. Останній біт 7, в залежності від режиму відеоадаптера, визначає або яскравість фону під даним символом (тоді фон також може приймати 16 різних кольорів), або мерехтіння символа.

При завантаженні машини встановлюється стандартна палітра, коди кольорів якої приведені в табл. 1.

Коди кольорів стандартної палітри. Таблиця 1

Код Колір Код Колір
0 Чорний 8 Сірий
1 Синій 9 Блакитний
2 Зелений А Салатовий
3 Бірюзовий В Ясно- бірюзовий
4 Червоний С Рожевий
5 Фіолетовий D Ясно- фіолетовий
6 Коричневий Е Жовтий
7 Білий F Яскраво- білий

 

Розглянемо деякі приклади. Так, в режимі мерехтіння, значення старшого півбайта атрибута 8h означає не сірий фон, а чорний при мерехтливому символі, колір якого як і раніше визначається молодшим півбайтом; значення старшого півбайта 0Ch - червоний фон при мерехтливому символі.

Перемикання призначення біта 7 здійснюється підфункцією 03h функції 10h переривання int 10h.

ДОВІДКОВІ ДАНІ ПО ФУНКЦІЯХ BIOS

Переривання int 10h

00h 02h 03h 05h 06h(07h) 08h 09h 0Ah 0Eh 10h 13h 00h(10h) 01h(11h)

· Функція 00h.Установка відеорежиму поточної відеосторінки.

Виклик:AH=00h

Al =відеорежим: 03h - текстовий, 80х25, 16 кольорів, встановлюється в DOS по замовчуванню;     

10h графічний (EGA), 640х350, 16 кольорів;
12h графічний (VGA), 640x480, 16 кольорів;
13h графічний (VGA), 320x200, 256 кольорів;

 

Існує ще багато інших відеорежимів, але їх номери для виклику через цю функцію різні для різних відеоадаптерів.

· Функція 02h.Установка позиції курсора.

Задає положення курсора на екрані в текстових координатах, з яких надалі буде виводитися текст. Відлік номера стрічки і стовпця ведеться від верхнього лівого кута. Курсор можна встановити як в текстовому, так і в графічному режимах, однак, в графічному режимі курсор не видно. BIOS підтримує 8 незалежних курсорів – поодному на кожну сторінку незалежно від того, яка сторінка є активною.

Виклик:AH= 02h,

BH = номер сторінки (0,1,...7),

DH= стрічка,

DL= стовпець.

· Функція 03h. Зчитування позиції і розміру курсора.

Повертає поточні координати стану курсора на вибраній сторінці. Це дає можливість тимчасово перейти для роботи на інше місце екрана, а потім повернутися на старе місце.

Виклик:AH= 03h,

BH = номер сторінки (0,1,...7),

Повернення:DH, DL= стрічка і стовпець поточної позиції курсора,

                          CH, CL= перша і остання стрічка розгортки курсора.

· Функція 05h. Установка відеосторінки.

Встановлює активну відеосторінку (як текстову, так і графічну)

Виклик:AH= 05h,

AL= номер сторінки (0,..., 7).

· Функція 06h(07h).Ініціалізація або прокрутка вікна вгору (вниз).

Ініціалізує вікно, з вказаними координатами, пробілами ASCII із заданим атрибутом (AL=0) або прокручує вміст вікна вгору (вниз) на задане число стрічок (AL = число стрічок). При прокрутці рядки, що з'являються знизу (зверху) заповнюються пробілами ASCII із заданим атрибутом. Функцію зручно використати для швидкого очищення екрана або деякого прямокутного вікна.

Виклик:AH= 06h(07h),

AL=0 - очищення, AL= N(N>0)-прокрутка на N рядків,

BH = атрибут символів у вікні,

CH, CL= координати рядка і стовпця (Y, X) лівого верхнього кута,

DH, DL = координата рядка і стовпця (Y, X) правого нижнього кута,

· Функція 08h.Читання символа і атрибута в поточній позиції курсора.

Виклик: AH= 08h,

BH = номер сторінки (0,..., 7),

Повернення:AH = атрибут символа,

AL = ASCII- код символа.

· Функція 09h. Запис символа із заданим атрибутом на екран в позицію курсора.

Діє як в графічному, так і в текстовому режимах. У графічному режимі символи не повинні перейти на наступний рядок. Всі коди в AL розглядаються як символьні і не управляють положенням курсора.Після виведення символа, курсор зміщається до наступної позиції функцією02h. Коефіцієнт повторення дозволяє виводити рядки однакових символів. У текстовому режимі символ виводиться з вказаним в BL атрибутом. У графічному - вміст BL впливає тільки на колір символа, але не на фон під ним. Графічне зображення під знакомесцем

затирається.

Виклик:AH= 09h,

AL = ASCII- код символа,

BL = атрибут символа (текстовий режим) або тільки колір символа (графічний режим),

BH=номерсторінки (0,1,...7),

CX= коефіцієнт повторення.

· Функція 0Ah.Запис символа з поточним атрибутом на екран в позицію курсора.

Функція діє як в графічному, так і в текстовому режимах. Символ приймає атрибут, встановлений раніше для цієї позиції. Всі ASCII- коди в AL розглядаються як знаки і не управляють положенням курсора (також як і в функції 09h).Після виведення символа, курсор зміщається до наступної позиціїфункцією 02h.

Виклик:AH= 0Ah,

AL = ASCII- код символа,

BH = номер сторінки (0,1,...7),

CX = коефіцієнт повторення.

· Функція 0Eh.Запис символа з поточним атрибутом в режимі телетайпу.

Записує символ ASCII в позицію курсора (заздалегідь встановлену функцією 02h) на активній сторінці і зміщає курсор до наступної позиції. Коди ASCII: 07h- дзвінок (BEL), 08h - крок назад (BS), 0Dh - повернення каретки (CR), 0Ah - перевід стрічки (LF), розглядаються як керівні і виконуються відповідні ним дії. Інші керуючі коди розглядаються як знаки і виводяться на екран. Діє автоматичний перевід курсора на наступний рядок після завершення попереднього, а також прокрутка екрана вгору на 1 рядок після заповнення самого нижнього.

Виклик:AH= 0Eh,

BH = номер сторінки (0,1,...7),

AL = ASCII- код символа,

BL = колір символа (тільки для графічного режиму).

· Функція 10h. Підфункція 03h. Перемикання біта "мерехтіння/яскравість".

Визначає призначення старшого біта 7 атрибута символа: мерехтіння символа або підвищена яскравість фону.

Виклик: AH= 1003h,

BL = призначення 7-го біта атрибута:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: