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

Коди кольорів стандартної палітри. Таблиця 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-го біта атрибута:

0-підвищена яскравість,

1- мерехтіння (встановлюється в DOS по замовчуванню).

  • Функція 13h.Запис стрічки символів із заданими атрибутами.

Записує стрічку в поточну сторінку відеобуфера, починаючи з вказаної позиції.

Коди ASCII: 07h- дзвінок, 08h- крок назад, 0Ah- перевід стрічки, 0Dh- повернення каретки, розглядаються як керівники, інші як символьні.

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

AL= режим запису:

0- атрибут символа в BL, стрічка містить тільки коди символів, після запису курсор приймає початкове положення;

1- відрізняється від режиму 0 тим, що після запису курсор переміщається в кінець стрічки;

2- стрічка містить навперемінно коди символів і атрибутів (тобто кожний символ описується 2 байтами - ASCII-кодом і атрибутом), після запису курсор приймає початкове положення;

3- відрізняється від режиму 2 тим, що по закінченню виводу курсор переміщається в кінець стрічки.

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

BL= атрибут для режимів 0 і 1,

CX= довжина символьної стрічка (в довжину входять тільки коди символів, але не байти атрибутів),

DX= DH.DL= координати курсора (рядок, стовпець) в початковій точці виведення на екрані,

ES:BP= адреса початку стрічки в пам'яті. Звернути увага на особливості задання адреси!

Переривання int 16h.

  • Функція 00h(10h).Читання символа клавіатури з очікуванням.

Читає з кільцевого буфера вводу (місткість буфера 15 слів) символ і скан-код. Якщо буфер пустий, чекає вводу.

Кожній клавіші на клавіатурі відповідає так званий скан-код, відповідній тільки цій клавіші. Цей код посилається клавіатурою при кожному натисненні і відпущенні клавіші і обробляється в BIOS обробником переривання int 9. Функція 00h(10h) дає можливість отримати код натиснення, не перехоплюючи цей обробник. Якщо натисненій клавіші відповідає ASCII-символ, то:

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

AH- скан-код клавіші.

Якщо натисненій клавіші відповідає розширений ASCII- код, то:

AL- 00h (або префікс0E0hдля сірих клавіш),

AH- розширенийASCII- код.

Виклик: AH= 00h(83/84-key), 10h(101/102-key),

Повернення:AL= ASCII- код символа, зображений на клавіші/00h(0E0h),

AH= скан-код/розширенийASCII- код клавіші.

Функція 00h(10h) є синхронною: при її виконанні програма зупиняється в очікуванні натисненої клавіші.

Отримати достовірну інформацію про скан-коди клавіш клавіатури можна шляхом виконання у відладчику Turbo Debugger простої програми Scancode.asm(див.Додаток 1 до роботи).

Функція 01h(11h).Перевірка буфера клавіатури на наявність в ньому символа.

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

Виклик:AH= 01h(83/84-key), 11h(101/102-key).

Повернення: ZF=1, якщо буфер пустий,

ZF=0, якщо в буфері є символ, що чекає зчитування. У цьому випадку:

AL= ASCII-код символа/00h(0E0h),

AH= скан-кодклавіші/розширений ASCII- код.