Підвищена яскравість

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

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

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

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

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

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

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

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

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

Відрізняється від режиму 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 - код.

 

ЛАБОРАТОРНЕ ЗАВДАННЯ

Ініціалізувати дві відеосторінки, кожна зі своїм атрибутом і записаним текстом (деякі символи тексту обов'язково повинні мати відмінний від інших колір). Організувати циклічну зміну відеосторінок з періодом 2...3 сік. Передбачити вихід з програми.

Текст програми


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



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