- •Пояснювальна записка
- •Завдання
- •Реферат
- •1. Основи програмування для ms dos
- •1.1. Робота з файлами
- •1.2. Ввід з клавіатури
- •1.3. Вивід на екран засобами dos
- •1.4. Вивід на екран засобами bios
- •3. Блок-схема програми на Асемблері
- •4. Текст програм та її опис на мові програмування Асемблер
- •2.Опис вибраного алгоритму програми
- •5. Аналіз результату роботи програми
- •Висновки
- •Список використаної літератури
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 значень.
