ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Керування дисплеєм за допомогою функцій BIOS

 

Керувати дисплеєм можна також на основі загальних принципів керування периферійними пристроями.

На початку свого розвитку мікропроцесорні системи мали у своєму складі програму, що називається “монітор”. Ця програма зазвичай знахо­ди­лась в ПЗП і обслуговувала пристрої введення-виведення – клавіатуру, дис­плей, касетний накопичувач на магнітній стрічці та ін. Діалогова час­тина монітора дозволяла виконувати деякі операторські функції – заван­таження і запуск програми, відлагоджування в покроковому режимі, друк текстів, перегляд і редагування вмісту пам’яті і т.д. Але найголовніше – прикладні програми, що були складені для цих систем, могли користуватись модулями монітора для роботи з периферійною апаратурою і виконувати ці операторські функції. Програма вже не містила в собі всі необхідні для її роботи модулі, а користувалась “стандартними” послугами програми-монітора. Така органі­зація програми не тільки зменшувала розмір її завантажувального модуля, а й дозволяла програмістам зосередити свої зусилля на розв’язанні основної задачі.

Механізм взаємодії програми користувача і монітора був реалізований по-різному у різних системах. У найгіршому випадку програма користувалась відомими абсолютними адресами модулів монітора, у найкращому – використовувала спеціальні таблиці адрес програмних модулів. На жаль, різні системи були несумісні за складом модулів монітора і механізмом їх виклику, що сильно утруднювало їх програмну сумісність, а іноді і цілком її виключало.

У першому масовому комп’ютері IBM PC модулі обслуговування стандартної периферії були записані в ПЗП. Сукупність цих модулів (плюс програма початкової ініціалізації і тестування) називається базовою системою введення-виведення – Basic Input/Output System (BIOS).

Комп’ютери, сумісні з IBM PC, що випускаються різними фірмами, можуть дещо відрізнятися за типом периферійного обладнання, але для досягнення сумісності з ІВМ РС модулі BIOS знімають ці відмінності, надаючи в розпорядження програми користувача стандартний набір модулів для роботи з пристроями введення-виведення.

Не буде перебільшенням сказати, що одна з причин такої попу­ляр­ності комп’ютера ІВМ РС на ринку персональних комп’ютерів – це наявність добре продуманого стандартного інтерфейсу модулів BIOS і прикладних програм. Саме завдяки цьому інтерфейсу досягається майже стовідсоткова сумісність персональних комп’ютерів даного типу, що випускаються різними фірмами, за їх програмним забезпеченням.

Для виклику відповідного модуля BIOS прикладна програма використовує команду переривання INT <n> з відповідним номером n. Програма передає параметри модулям BIOS через регістри процесора, результат роботи модуля повертається також в регістри.

Для роботи з дисплейним адаптером використовується команда переривання INT 10h. Під час виклику цього переривання, як і під час виклику багатьох інших переривань, регістр АН повинен містити номер функції, яку слід виконати. Для виконання більшості функцій необхідно мати деякі додаткові дані, які повинні бути розміщені в регістрах AL, BX, CX, DX. Надалі ми конкретно розглянемо всі функції, необхідні для керування CGA-дисплеєм. Варто зауважити, що, у порівнянні з безпосереднім доступом до відеопам’яті, використання звернень до BIOS є набагато простішим інструментом, але більшість функцій BIOS характеризуються невисокою швидкодією.

 

Основні функції BIOS для керування дисплеєм

Дисплей може працювати у декількох режимах. Перелік можливих режимів роботи дисплея наведено в табл.9.

Таблиця 9 – Режими роботи дисплеїв

Номер режиму Текстовий або графічний Колір є/немає і скільки Формат Тип адаптера
текстовий немає 40 зн. х 80 ряд. MDA, CGA, EGA
текстовий 8 кольорів 40 зн. х 80 ряд. CGA, EGA, VGA
текстовий немає 80 зн. х 80 ряд. CGA, EGA, VGA
текстовий 8 кольорів 80 зн. х 80 ряд. CGA, EGA, VGA
графічний 6 кольорів 320 х 200 точ. CGA, EGA, VGA
графічний немає 320 х 200 точ. CGA, EGA, VGA
графічний немає 640 х 200 точ. CGA, EGA, VGA
текстовий немає 80 зн. х 80 ряд. Hercules,EGA,VGA
0Dh графічний 16 кольорів 320 х 200 точ. EGA, VGA
0Eh графічний 16 кольорів 640 х 200 точ. EGA, VGA
0Fh графічний немає 640 х 350 точ. EGA, VGA
10h графічний 4 або 16 кольорів 640 х 350 точ. EGA, VGA
11h графічний немає 640 х 480 точ. VGA
12h графічний 16 кольорів 640 х 480 точ. VGA
13h графічний 256 кольорів 320 х 200 точ. VGA

Для зручності зведемо всі функції BIOS для керування роботою дисплеїв у таблицю 10.

Таблиця 10 – Функції переривання INT 10h для керування роботою дисплеїв

Но­мер функції Призна­чення Вміст регістрів Пояснення  
00h Задання режиму дисплея На вході: АН = 00h AL = номер режиму (табл.9) Функція використовується для вибору режиму роботи дисплея.  
01h Задання типу курсора На вході: АН = 01h СН = номер початкової лінії AL = номер кінцевої лінії. На виході: немає Функція дозволяє встановити розмір курсора. Передбачено визначення пер­шої та останньої лінії (лінії розгор­т­ки), що обмежують область розта­шу­вання символу (установлення початкової лінії вгорі області, а установлення кінце­вої лінії внизу області не обов’яз­ко­ве, тобто курсор може бути встанов­ле­но посередині описаної області). Слід зауважити, що в графічному ре­жимі курсор відсутній. Курсор може бути відключений шляхом уста­нов­лен­ня початкової і кінцевої лінії ниж­че рівня розташування курсора.    
02h Задання позиції курсора На вході: АН = 02h DH = номер рядка DL = номер стовпчика BH = номер сторінки На виході: немає Функція видає координати для пози­ці­онування курсора на екрані. Рядок 0 розташований вгорі, а стовпчик 0 – в лівій частині екрана.  
03h Зчитування позиції курсора На вході: AH = 03h BH = номер сторінки На виході: DH =поточний рядок DL = поточний стовпчик CH = початкова лінія курсора CL = кінцева ліні На виході: немає Функція дозволяє отримати коор­ди­на­ти позиції курсора на екрані та його тип.  
05h Задання активної сторінки екрана, тобто, який з екранів буде виве­дено на дис­плей (за замов­чу­ван­ням – 0) На вході: AH = 05h AL = номер сторінки, що виводиться на екран дисплея На виході: немає Адаптер дозволяє використовувати де­кілька сторінок (екранів) інфор­ма­ції в пам’яті. Видимою в певний мо­мент може бути лише одна – ак­тивна сторінка. Більшість функцій можуть мо­­дифікувати екран (запис символу, по­будова точки і т.д.) і ви­бирати сто­рінку, а отже вносити змі­ни в неви­ди­му сторінку. Тобто на екрані може бу­ти одне зображення, в той час як ми мо­дифікуємо іншу сто­рінку (зруч­но при муль­ти­плі­кації і виведенні слай­дів).  
06h Прокручування (скролінг) активної сторінки вгору На вході: AH = 06h AL = число рядків, на яке слід “прокрутити” (0 – для очистки екрана) BH = символ атрибута нових рядків CH = верхній рядок вікна CL = лівий стовпчик вікна DH = нижній рядок вікна DL = правий стовпчик вікна На виході: немає За допомогою цієї функції вико­ну­єть­ся прокручування тексту на екрані: рядки пе­реміщуються знизу вгору, а внизу здійснюється вставка пустих рядків. Можуть бути визначені координати вікна, яке прокручується, оскільки лише частина екрана може підлягати про­кру­чуванню.      
  07h Прокручування (скролінг) активної сторінки вниз На вході: AH = 07h AL = число рядків, на яке слід “прокрутити” (0 – для очистки екрана) BH = символ атрибута нових рядків CH = верхній рядок вікна CL = лівий стовпчик вікна DH = нижній рядок вікна DL = правий стовпчик вікна На виході: немає   Виконується прокручування тексту на екрані: рядки переміщуються згори донизу, а вгорі здійснюється вставка пустих рядків. Функція працює таким самим чином, як і 05h.  
  08h Зчитування атрибута і сим-волу в поточній позиції курсора На вході: AH = 08h BH = номер сторінки На виході: AL = ASCII-код символу AH = атрибут символу   Функція може бути використана для зчитування символу з будь-якої сто­рін­ки. У результаті повертається сим­вол, розташований в поточній позиції курсора вказаної сторінки і його ат­ри­бут. Атрибут являє собою один байт згідно з рис.8 і табл.6. Байт атрибута має сенс лише в текстових режимах.    
  09h Установлення атрибута символу і запис символу в поточну позицію курсора На вході: AH = 09h AL = ASCII-код символу BH = номер сторінки BL = атрибут символу CX = кількість записуваних символів На виході: немає В графічних режимах байт атрибуту ви­ко­ри­стовується для установлення ко­льо­ру символу. Установлення 7-го біта байта ат­рибуту приводить до того, що сим­вол накладається на поточний вміст екрана. В текстових режимах ви­ве­ден­ня більшого, ніж може поміс­ти­ти­ся, числа копій символу призведе до перенесення на наступний рядок. У графічному режимі всі символи повинні роз­міщатися в одному рядку. Позиціонування сим­волу повинно виконуватись засо­бами програми. Виведення керуючих символів виконується як ви­­ведення звичайних символів.    
  0Ah Запис символу у поточну позицію курсора На вході: AH = 0Ah AL = ASCII-код символу BH = номер сторінки CX = кількість символів, що записуються На виході: немає Звернення до цієї функції ідентичне зверненню до функції 09h, за винятком того, що атрибут не може бу­ти установлений (існуючі атрибути не змінюються).
  0Bh Задання палітри кольорів На вході: AH = 0Bh BH = ідентифікатор фону або палітри кольорів BL = номер кольору На виході: немає При ВН = 0 у графічному режимі ре­гістр BL визначає колір фону (зна­чен­ня 0-15), а у текстових режимах – колір границі (значення 0-31).
  0Ch Запис точки На вході: AH = 0Ch AL = номер кольору BH = номер сторінки (лише для EGA та VGA) CX = номер стовпчика піксела (0-319 або 0-639) DX = номер рядка (0-199, 0-349 або 0479) На виході: немає Звернення до цієї функції застосо­ву­єть­ся для побудови точки на будь-якій сторінці в графічних режимах. Стовп­чик 0 розташований зліва, а рядок 0 – вгорі екрана. Якщо в регістрі AL вста­новлений біт 7, то новий піксел на­кла­дається на поточний вміст екрана з використанням функції “виключне АБО”. Регістр ВН (номер сторінки) CGA не підтримує.
  0Dh Зчитування точки На вході: AH = 0Dh BH = номер сторінки (лише для EGA та VGA) CX = номер стовпчика піксела (0-319 або 0-639) DX = номер рядка (0-199, 0-349 або 0-479) На виході: AL = значення кольору точки На виході: немає Звернення до цієї функції викори­сто­ву­ється для отримання кольору точки, розташованої на будь-якій сторінці у графічному режимі (для CGA лише одна сторінка). Стовпчик 0 розта­шо­ваний зліва, а рядок 0 – вгорі екрана.
               

 

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти