Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсак Олексин.doc
Скачиваний:
3
Добавлен:
28.10.2018
Размер:
943 Кб
Скачать
☆

1.4. Вивід на екран засобами bios

Функції BIOS володіють великими можливостями і широко використовуються в прикладних програмах для утворення кольорових інформаційних кадрів, переключання відеорежимів, завантаження шрифтів користувача і інші дії з відеосистемою. Їх недостаток в порівнянні з функціями DOS являється відносна величина використання. Функції використовуються при роботі в текстовому режимі, які перечислені в табл. 1.4.

Функція 02h дозволяє встановити позицію текстового курсору, задаючи його розміщення у вигляді номера рядка (0...24) і номера стовпчика (0...79). BIOS підтримує 8 незалежних курсорів – по одному на кожну відеосторінку, причому функція 02h встановлює позицію курсору незалежно від того, яка сторінка являється активною.

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

Таблиця 1.4. Основні функції BIOS для роботи в текстовім режимі

Функція

Призначення

02h

Установка позиції курсору

03h

Зчитування позиції курсору

05h

Установка відеосторінки

06h

Ініціалізація або прокрутка вікна вгору

07h

Ініціалізація або прокрутка вікна вниз

08h

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

09h

Запис символу із заданим атрибутом на екран в позицію курсору

0Ah

Запис символу з поточним атрибутом на екран в позицію курсору

0Eh

Запис символу з поточним атрибутом а режимі телетайпу

1003h

Перемикання біта „мерехтіння/яскравість”

13h

Запис стрічки символів із заданими атрибутами

Функція 05h переключає відеосторінку. Якщо відеосистема знаходиться в текстовому режимі, то переключається текстові сторінки (0...7), якщо встановлений графічний режим, то переключається графічні сторінки (0...1).

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

За допомогою функцій 06h і 07h в заданому місці екрана дисплея створюються кольорові прямокутні вікна заданих розмірів. Якщо в створених завідома вікнах є виділений будь-який текст, то з допомогою цих функцій можна прокручувати текст вверх або вниз. При цьому текст, який виходить за край вікна, пропадає, а із протилежного краю появляється пусті рядки із заданими атрибутами кольорів. Для заповнення рядків текстом потрібно використати відповідні функції BIOS, при чому контроль розміщення, довжини і кольору стрічки покладається на програміста. Програми BIOS тільки прокручують задану прямокутну область екрану (разом з текстом в ній).

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

Функція 0Eh фільтрує управляючі коди 07h (сигнал звуку), 08h (крок назад), 10h (перевід стрічки) і 13h (повернення каретки), яка виконує відповідні їм дії. Курсор переміщується після виводу кожного символу, що дає можливість виводити цілі стрічки. Однак атрибут символу встановити не можна , символ набуває попередній атрибут тої позиції, де він виводиться. При необхідності виводу символу з новим атрибутом потрібно спочатку вивести в задану позицію символ пробілу з потрібним атрибутом (функцією 09h), а пізніше там же послати символ з допомогою функції 0Eh.

Важливою властивістю функції 0Eh являється автоматичний перехід на наступну стрічку після завершення попередньої, а також прокрутка екрана вверх на одну стрічку після заповнення найнижчої стрічки.

Функція 13h призначена для виводу стрічок із вказанням атрибутів, як кожного символу окремо, так і всієї стрічки. Функція може виконуватись в чотирьох варіантах в залежності від коду режиму, який вказується в регістрі AL, в режимах 0 і 1 атрибут символів вказується зразу для всієї стрічки в регістрі BL, причому в режимі 0 курсор не зміщується в процесі виводу, а в режимі 1 – зміщується на довжину стрічки. В режимах 2 і 3 атрибути символів включаються у виведену стрічку, в якій, таким чином, дозволяє встановлювати атрибути для кожного символу незалежно. Режим 2 відрізняються від режиму 3 тим, що в першому випадку курсор не зміщується, а, по-друге, зміщуеться на довжину стрічки.

При виклику функції 13h в регістрі DX задаються координати початку стрічки, яку виводиться (в DH – стрічка екрана, і в DL - стовпчик), а в регістрі CX – довжина стрічки, яка в режимах 2 і 3 оказується за рахунок байтів з атрибутом в два рази більше довжини стрічки, яка реально появляється на екрані. Адрес стрічки, яка виводиться, повинен бути поміщеним в регістрі ES:BP.

Функція 13h виводить не всі символи, так як коди 07h, 08h 0Ah і 0Dh розглядаються як керуючі.

При виводі на екран засобами BIOS необхідно знати, що ввід з клавіатури Ctrl+c не приводить до завершення програми. Потрібно остерігатися безкінечних циклів виводу на екран; вихід із них можливий лише шляхом перезавантаження комп’ютера.

Підфункція 03h функції 10h (переривання 10h), на відміну від описаних вище функцій виводу символів і стрічок, діє зразу на весь екран і впливає на зображення тих символів, у яких встановлений старший біт атрибута фону. Функція дозволяє або приписати цей біт яскравості фону, що дає можливість виводити на екран 16 кольорів фону, або назначити його атрибут мерехтіння символу. В останньому випадку колір фону може приймати тільки 8 значень.