Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
labs&konspeckts / SP_ukr / asm_11_доперевести.doc
Скачиваний:
13
Добавлен:
12.05.2015
Размер:
294.4 Кб
Скачать
    1. Прерывания dos и bios

    1. Функції dos

;************************************************************************

INT 21 f.00 - Завершити програму

AH = 00h

CS = PSP segment

;************************************************************************

INT 21 f.01 - Прочитати символ з стандартного каналу введення з відображенням

AH = 01h

Повертає: AL = символ

;************************************************************************

INT 21 f.02 - Записати символ в стандартний пристрій виведення

AH = 02h

DL = символ

;************************************************************************

INT 21 f.03 - Введення символа з асинхронного комунікаційного каналу

AH = 03h

Повертає: AL = символ

;************************************************************************

INT 21 f.04 - Виведення на асинхронний комунікаційний канал

AH = 04h

DL = символ

;************************************************************************

INT 21 f.05 - Виведення на принтер

AH = 05h

DL = символ

;************************************************************************

INT 21 f.06 - Пряме виведення на консоль

AH = 06h

DL = символ

;************************************************************************

INT 21 f.06 - Пряме введення з консолі

AH = 06h

DL = FFh

Повертає: ZF встановлений в 1 якщо no символ доступний

AL = 00h

ZF скинений якщо символ доступний

AL = символ

;************************************************************************

INT 21 f.07 - Пряме введення без відображення

AH = 07h

Повертає: AL = символ

;************************************************************************

INT 21 f.08 - Пряме введення без відображення

AH = 08h

Повертає: AL = символ

;************************************************************************

INT 21 f.09 - Вивести рядок на стандартний пристрій виведення

AH = 09h

DS:DX -> рядок, що закінчується на '$' (24h)

Повертає: AL = 24h

;************************************************************************

INT 21 f.0A - Введення з буферизацією

AH = 0Ah

DS:DX -> буфер

Повертає: буфер

;************************************************************************

INT 21 f.0B - Перевірка статусу STDIN

AH = 0Bh

Повертає: AL = статус

00h якщо символ не доступний

FFh якщо символ доступний

;************************************************************************

INT 21 f.0E - Вибрати поточний диск

AH = 0Eh

DL = поточний диск (00h = А:, 01h = В:, etc)

Повертає: AL = кількість потенційно доступних букв диска

;************************************************************************

INT 21 f.0F - Відкрити файл використовуючи FCB

AH = 0Fh

DS:DX -> File Control Block

Повертає: AL = статус

00h якщо ОК

FFh файл не знайдений

;************************************************************************

INT 21 f.10 - Закрити файл використовуючи FCB

AH = 10h

DS:DX -> File Control Block

Повертає: AL = статус

00h якщо ОК

FFh файл не знайдений

;************************************************************************

INT 21 f.11 - Знайти перше входження файла в поточну директорію використовуючи FCB

(FindFirst)

AH = 11h

DS:DX -> FCB

Повертає: AL = статус

00h ОК

FFh Не ОК

;************************************************************************

INT 21 f.12 - Знайти наступне входження файла в поточну директорію використовуючи FCB

(FindNext)

AH = 12h

DS:DX -> FCB

Повертає: AL = статус

00h ОК

FFh Не ОК

;************************************************************************

INT 21 f.13 - Видалення файла через FCB

AH = 13h

DS:DX -> FCB

Повертає: AL = статус

00h ОК

FFh Не ОК

;************************************************************************

INT 21 f.14 - Послідовне читання файла через FCB

AH = 14h

DS:DX -> відкритий FCB

Повертає: AL = статус

00h ОК

01h кінець файла (no data)

02h segment wrap in DTA

03h кінець файла, останній запис прочитаний

;************************************************************************

INT 21 f.15 - Послідовний запис в файл через FCB

AH = 15h

DS:DX -> FCB

Повертає: AL = статус

00h операція завершена успішно

01h disk full

02h segment wrap in DTA

;************************************************************************

INT 21 f.16 - Створення файла

AH = 16h

DS:DX -> FCB

Повертає: AL = статус

00h операція завершена успішно

FFh операція завершена не успішно

;************************************************************************

INT 21 f.17 - Перейменувати файл

AH = 17h

DS:DX -> FCB

Повертає: AL = статус

00h операція завершена успішно

FFh операція завершена не успішно

;************************************************************************

INT 21 f.19 - Отримати поточний диск

AH = 19h

Повертає: AL = диск (00h = А:, 01h = В:, etc)

;************************************************************************

INT 21 f.1B - Отримати інформацію по поточному диску

AH = 1Bh

Повертає: AL = sectors per cluster

CX = bytes per sector

DX = total number of clusters

DS:BX -> ID byte

Значення ID byte:

FFh floppy, double-sided, 8 sectors per track (320K)

FEh floppy, single-sided, 8 sectors per track (160K)

FDh floppy, double-sided, 9 sectors per track (360K)

FCh floppy, single-sided, 9 sectors per track (180K)

FAh HP 200LX D: ROM disk, 16 sectors per track (995K)

HP 200LX Е: (Stacker host диск? ??)

F9h floppy, double-sided, 15 sectors per track (1.2M)

floppy, double-sided, 9 sectors per track (720K, 3.5")

F8h hard disk

F0h other media

(e.g. floppy, double-sized, 18 sectors per track -- 1.44M, 3.5")

;************************************************************************

INT 21 f. - Отримати інформацію по будь-якому диску

AH = 1Ch

DL = диск (00h = default, 01h = А:, etc)

Повертає: AL = секторів на кластер або FFh якщо неправильно вказаний диск

CX = байтів на сектор

DX = кількість кластерів

DS:BX -> ID byte

Значення ID byte:

FFh floppy, double-sided, 8 sectors per track (320K)

FEh floppy, single-sided, 8 sectors per track (160K)

FDh floppy, double-sided, 9 sectors per track (360K)

FCh floppy, single-sided, 9 sectors per track (180K)

FAh HP 200LX D: ROM disk, 16 sectors per track (995K)

HP 200LX Е: (Stacker host диск? ??)

F9h floppy, double-sided, 15 sectors per track (1.2M)

floppy, double-sided, 9 sectors per track (720K, 3.5")

F8h hard disk

F0h other media

(e.g. floppy, double-sized, 18 sectors per track -- 1.44M, 3.5")

;************************************************************************

INT 21 f.1F - Отримання блоку параметрів диска

AH = 1Fh

Повертає: AL = статус

00h операція завершена успішно

DS:BX -> Drive Parameter Block (DPB)

(see AH=32h for DOS 2+)

FFh invalid диск

;************************************************************************

INT 21 f.23 - Отримати розмір файла

AH = 23h

DS:DX -> FCB

Повертає: AL = статус

00h операція завершена успішно (matching file found)

FFh файл не знайдений

;************************************************************************

INT 21 f.25 - Встановити вектор переривання

AH = 25h

AL = номер переривання

DS:DX -> новий handler переривання

;************************************************************************

INT 21 f.2A - Отримати системну дату

AH = 2Ah

Повертає: CX = Рік (1980-2099)

DH = Місяць

DL = День

AL = День тижня (00h=Воскресіння)

;************************************************************************

INT 21 f.2B - Встановити системну дату

AH = 2Bh

CX = Рік (1980-2099)

DH = Місяць

DL = День

Повертає: AL = статус

00h операція завершена успішно

FFh помилка

;************************************************************************

INT 21 f.2C - Получитm системний час

AH = 2Ch

Повертає: CH = години

CL = хвилини

DH = секунди

DL = 1/100 секунд

;************************************************************************

INT 21 f.2D - Встановити системний час

AH = 2Dh

CH = години

CL = хвилини

DH = секунди

DL = 1/100 секунд

Повертає: AL = результат

00h операція завершена успішно

FFh помилка

;************************************************************************

INT 21 f.2E - Установіnь прапор верифікації (VERIFY=ON in CONFIG.SYS)

AH = 2Eh

AL = 00h off

01h on

;************************************************************************

INT 21 f.30 - Отримати версію ДОС

AH = 30h

AL = що повертати в BH

00h OEM

01h прапор версії

Повертає: AL = основний номер версії (00h якщо DOS 1.x)

AH = неосновний номер

BL:CX = 24-bit серійний номер

--- якщо DOS < 5 або AL=00h

BH = MS-DOS OEM

--- якщо DOS > 5 і AL=01h

BH = прапор версії

(Table 0741)

Значення для номера OEM:

00h IBM

01h Compaq

02h MS Packaged Product

04h AT&Т

05h ZDS (Zenith Electronics)

06h Hewlett-Packard

07h ZDS (Groupe Bull)

0Dh Packard-Bell

16h DEC

23h Olivetti

28h Texas Instruments

29h Toshiba

33h Novell (Windows/386 device IDs only)

34h MS Multimedia Systems (Windows/386 device IDs only)

35h MS Multimedia Systems (Windows/386 device IDs only)

4Dh Hewlett-Packard

5Eh RxDOS

66h PhysTechSoft (PTS-DOS)

99h General Software's Embedded DOS

EEh DR DOS

EFh Novell DOS

FDh FreeDOS

FFh Microsoft, Phoenix

;************************************************************************

INT 21 f.31 - Завершити роботу і залишитися резидентом

AH = 31h

AL = код повернення

DX = кількість параграфів для резидента

Повертає: нічого

;************************************************************************

INT 21 f.35 - Отримати вектор переривань

AH = 35h

AL = номер переривання

Повертає: ES:BX -> початковий обробник переривання переривання

;************************************************************************

INT 21 f. - Отримати к-ть вільного місця на диску

AH = 36h

DL = номер диска (00h = default, 01h = А:, etc)

Повертає: AX = FFFFh якщо невірно вказаний диск

AX = секторів на кластер

BX = кількість вільних кластерів

CX = байтів на сектор

DX = к-ть кластерів на диску

*** Кількість вільних байт на диску = AX * BX * CX

Загальна кількість байт на диску = AX * CX * DX

;************************************************************************

INT 21 f.3A - "RMDIR" - Видалити каталог

AH = 3Ah

DS:DX -> ASCIZ каталог

Повертає: CF скинений якщо операція завершена успішно

AX руйнується

CF встановлений в 1 при помилці

AX = error code (03h, 05h, 06h, 10h)

;************************************************************************

INT 21 f.3B - "CHDIR" - Змінити поточний каталог

AH = 3Bh

DS:DX -> ASCIZ каталог

Повертає: CF скинений якщо операція завершена успішно

AX руйнується

CF встановлений в 1 при помилці

AX = error code (03h)

;************************************************************************

INT 21 f.3C - "CREATЕ" - Створити файл

AH = 3Ch

CX = атрибути файла

DS:DX -> ASCIZ ім'я файла

Повертає: CF скинений якщо операція завершена успішно

AX = handler файла

CF встановлений в 1 при помилці

AX = код помилки (03h, 04h, 05h) (see #1020 at AH=59h/BX=0000h)

Атрибути:

Bit(s) опис

0 read-only

1 hidden

2 system

3 volume label (ignored)

4 = 0

5 archive

7 якщо встановлений в 1, що розділяється файл Novel NetWare

;************************************************************************

INT 21 f.3E - DOS 2+ - "CLOSE" - CLOSE FILE

AH = 3Eh

BX = handler файла

Повертає: CF скинений якщо операція завершена успішно

AX destroyed

CF встановлений в 1 on error

AX = error code (06h) (see #1020 at AH=59h/BX=0000h)

;************************************************************************

INT 21 f.41 - "UNLINK" - Видалити файл

AH = 41h

DS:DX -> рядок що закінчується на 0, що містить ім'я файла

(маски не використровуються)

Повертає: CF скинений якщо операція завершена успішно

;************************************************************************

INT 21 f.43 - Отримати атрибути файла

AX = 4300h

DS:DX -> ASCIZ ім'я

Повертає: CF скинений якщо операція завершена успішно

CX = file attributes

AX = CX (DR DOS 5.0)

CF встановлений в 1 при помилці

;************************************************************************

INT 21 f.43 - Встановити атрибути файла

AX = 4301h

CX = tes (see #0765)

DS:DX -> ASCIZ ім'я файла

Повертає: CF скинений якщо операція завершена успішно

CF встановлений в 1 при помилці

Атрибути:

Bit(s) опис

6 unused

5 archive

4 directory

3 volume label

execute-only (Novell NetWare)

2 system

1 hidden

0 read-only

;************************************************************************

INT 21 f.4B - "EXEC" - Завантажити і/або виконати програму

AH = 4Bh

AL = тип завантаження

00h Завантажити і виконати програму

01h Завантажити але не виконувати програму

03h Завантажити еверлей

04h Завантажити і виконати програму в фоновому режимі

(тільки для European MS-DOS 4.0)

DS:DX -> ASCIZ ім'я програми з розширенням

ES:BX -> блок параметрів

Повертає: CF скинений якщо операція завершена успішно

BX, DX руйнуються

CF встановлений в 1 при помилці

;************************************************************************

INT 21 f.4C - "EXIT" - Вихід з програми

AH = 4Ch

AL = код повернення

Повертає: нічого

;************************************************************************

INT 21 f.54 - Набути значення прапора верифікації

AH = 54h

Повертає: AL = 00h off

01h on

;************************************************************************

INT 21 f.56 - "RENAME" - перейменувати файл

AH = 56h

DS:DX -> ASCIZ ім'я початкового файла

ES:DI -> ASCIZ нове ім'я файла

CL = маска атрибута

Повертає: CF скинений якщо операція завершена успішно

CF встановлений в 1 при помилці

;************************************************************************

INT 21 f.5B - Створити файл

AH = 5Bh

CX = атрибути

DS:DX -> ASCIZ ім'я

Повертає: CF скинений якщо операція завершена успішно

AX = handle файла

CF встановлений в 1 при помилці

**********************************************************************

**********************************************************************

**********************************************************************

2. Функції BIOS

INT 10h

00h Встановити відеорежим

На вхід: AH 00h

AL відеорежим

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

01h Встановити розмір курсора

Для того щоб встановити розмір курсора, необхідно указати номер першої і

номер останньої ліній прямокутника курсора (start and end lines) в алфавітноцифровій матриці.

На вхід: AH 01h

CH номер першої лінії (біти з 4 по 0)

CL номер останньої лінії (біти з 4 по 0)

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

02h Встановити позицію курсора

На вхід: AH 02h

BH номер сторінки

DH рядок

DL стовпець

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

03h Отримати позицію курсора і його розмір

На вхід: AH 03h

BH номер відеосторінки

Повертає: CH номер першої лінії курсора в матриці

CL номер останньої лінії курсора в матриці

DH рядок

DL колонка

Руйнує вміст регістрів: AX, SP, BP, SI, DI

04h Отримати позицію світлового пера

На вхід: AH 04h

Повертає: AH стан (0=не активне, 1=активно)

BX номер точки в рядку (0-639)

CH номер рядка точок (0-199)

CX номер рядка для режимів 0Fh-10h (0-nnn)

DH номер рядка символів (0-24)

DL номер символа в рядку (0-39 or 0-79)

Руйнує вміст регістрів: AX, SP, BP, SI, DI

05h Встановити активну сторінку

На вхід: AH 05h

AL номер сторінки

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

06h Скроллінг вікна вгору

На вхід: AH 06h

AL кількість рядків, на яку буде скролліровано вікно (якщо 0, то вікно буде очищене)

BH атрибут символа пропуску

CH х-координата верхнього лівого кута

CL у-координата верхнього лівого кута

DH х-координата нижнього правого кута

DL у-координата нижнього правого углаer

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

07h Скроллінг вікна вниз

На вхід: AH 07h

AL кількість рядків, на яку буде скролліровано вікно (якщо 0, то вікно буде очищене)

BH атрибут символа пропуску

CH х-координата верхнього лівого кута

CL у-координата верхнього лівого кута

DH х-координата нижнього правого кута

DL у-координата нижнього правого углаer

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

08h Прочитати символ з атрибутом

Повертає (в текстовому режимі) атрибут символа і ASCII-код символа на котрім

встановлений курсор на вказаній сторінці.

На вхід: AH 08h

BH номер відеосторінки (в текстовому режимі)

Повертає: AH атрибут символа (в текстовому режимі)

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

Руйнує вміст регістрів: AX, SP, BP, SI, DI

09h Записати символ(ы) з атрибутом

Записує (в текстовому режимі) атрибут символа і ASCII-код символа в позицію, вказану курсором.

На вхід: AX 09h

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

BH номер відеосторінки (в текстовому режимі)

BL атрибут символа

CX кількість разів

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

Символи записуються від положення курсора у напрямах праворуч і вниз, але

сам курсор при цьому не переміщається.

0Ah Записати символ(и) (без атрибута)

На вхід: AX 09h

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

BH номер відеосторінки (в текстовому режимі)

CX кількість разів

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

Символи записуються від положення курсора у напрямах праворуч і вниз, але

сам курсор при цьому не переміщається.

0Bh Встановити палітру кольорів

На вхід: AX 0Bh

BH, BL ідентифікатори кольорів

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

Якщо BH = 0, то переривання виконає:

- установку кольору фону для графічного режиму 320 х 200

- установку кольору бордюру для текстового режиму

- установку кольору малювання для графічного режиму 640 х 200

BL містить колір, що використовується. Для відеоконтролера EGA встановлюється

колір фону для графічного режиму 640 х 200. Колір бордюру від 16 по 31 є інтенсивним.

0Ch Поставити точку

На вхід: AH 0Ch

AL колір точки

CX горизонтальна позиція точки

DX вертикальна позиція точки

BH номер відеосторінки (для графічних режимів

що мають більше за одну відеосторінку)

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

0Dh Отримати точку

На вхід: AH 0Ch

CX горизонтальна позиція точки

DX вертикальна позиція точки

BH номер відеосторінки (для графічних режимів

що мають більше за одну відеосторінку)

Повертає: AL колір точки

Руйнує вміст регістрів: AX, SP, BP, SI, DI

0Eh Записати символ і перемістити курсор

На вхід: AH 0Eh

AL символ для запису на екран

BL колір символа в графічному режимі

(в АЦ режимі атрибут зберігається)

BH номер відеосторінки в АЦ режимі

Повертає: нічого

0Fh Дай поточну відеорежим

На вхід: AH 0Fh

Повертає: AL відеорежим

AH кількість символів в рядку

BH номер активної відеосторінки

Руйнує вміст регістрів: AX, SP, BP, SI, DI

10h Встановити регістри палітри PCjr, EGA

На вхід: AH 10h

AL підфункція

0 - встановити регістр палітри

BL регістр палітри

BH колір

1 - встановити регістр кольору бордюру

BH колір

2 - встановити регістри палітри і бордюру

ES:DX покажчик на список кольорів

3 - перемкнути біт інтенсивності/мерехтіння

BL 0 - інтенсивність

BL 1 - мерехтіння

Руйнує вміст регістрів: AX, SP, BP, SI, DI

11h Змінює шрифт відеоконтролеру EGA

На вхід:

AH 11h

AL підфункція

00h - завантажити шрифт користувача (АЦ режими)

ES:BP покажчик на таблицю з шрифтом

CX число символів

DX зміщення 1-го символа частини таблиці, що завантажується

BL шрифтовий блок для завантаження (0-3)

BH число байт на символ

01h - завантажити шрифт 8x14 (монохромний АЦ режим)

BL шрифтовий блок для завантаження (0-3)

02h - завантажити шрифт символів 8x8 з подвійною точкою (АЦ режими)

BL шрифтовий блок для завантаження (0-3)

03h - встановити певний блок (АЦ режими)

BL біти 3 і 2 вибирають блок (0-3), коли біт 3 байта-атрибу-

та = 1; біти 1 і 0 вибирають блок (0-3), коли біт 3 бай-

тієї-атрибута = 0

10h - завантажити шрифт користувача (АЦ режими)

ES:BP покажчик на таблицю з шрифтом

CX число символів

DX зміщення 1-го символа частини таблиці, що завантажується

BL шрифтовий блок для завантаження (0-3)

BH число байт на символ

11h - завантажити шрифт 8x14 (монохромний АЦ режим)

BL шрифтовий блок для завантаження (0-3)

12h - завантажити шрифт символів 8x8 з подвійною точкою (АЦ режими)

BL шрифтовий блок для завантаження (0-3)

20h - завантажити шрифт користувача символів 8x8 (графічний

режим)

ES:BP покажчик на графічну таблицю користувача для графічних символів 128-255. int 1Fh встановлює даний

покажчик

21h - завантажити шрифт користувача(графічний режим)

ES:BP покажчик на графічну таблицю користувача символів

0-255

CX число байт на символ

BL кількість рядків

00h - DL містить кількість рядків

01h - 14 (0Eh) рядків

02h - 25 (19h) рядків

03h - 43 (2Bh) рядків

22h - завантажити в ОЗУ шрифт символів 8x14 (графічний режим)

BL кількість рядків (формат як в підфункції 21h)

23h - завантажити в ОЗУ шрифт символів 8x8 з подвійною точкою в сим-

волі (графічний режим)

BL кількість рядків (формат як в підфункції 21h)

30h - повертає інформацію про шрифт

BH тип покажчика

00h - INT 1Fh - покажчик

01h - INT 44h - покажчик

02h - покажчик шрифту 8x14 в ОЗУ

03h - покажчик шрифту 8x8 в ОЗУ

04h - покажчик шрифту 8x8 в ОЗУ з подвійною точкою

05h - покажчик шрифту 8x9 в ОЗУ для АЦ режиму

Повертає: (тільки підфункція 30h повертає інформацію про шрифт)

ES:BP покажчик на таблицю, визначену в BH

CX число байт на символ в шрифті

DL розмір екрана в рядках

12h Інформація про відеоконтролер EGA

Повертає інформацію об відеоконтролер (EGA) і дозволяє вибрати альтернативний спосіб друку екрана (Print Screen).

На вхід:

AH 12h

BL підфункція

10h - повернути інформацію об EGA

20h - вибрати альтернативну рутину виконуючий друк екрана

Повертає: (тільки для підфункції 10h):

BH відображає реальний режим

00h кольоровий режим (3Dxh - регістри)

01h монохромний режим (3Bxh - регістри)

BL розмір пам'яті EGA

00h 64K

01h 128K

02h 192K

03h 256K

CH інформація про стан EGA (див. нижче)

CL стан перемикачів (switch)

13h Записати рядок символів з атрибутом

На вхід: AH 13h

AL підфункція (0-3)

BH номер відеосторінки

BL атрибут символів (для підфункцій 0 і 1)

CX довжина рядка

DH у-координата першого символа рядка

DL х-координата першого символа рядка

ES:BP покажчик на рядок

Повертає: нічого

Руйнує вміст регістрів: AX, SP, BP, SI, DI

14h Управління відеоконтролером LCD

Дозволяє використати шрифти користувача і задавати використання ат-

рибута підвищеної інтенсивності (є на сумісних з PC).

На вхід:

AH 14h

AL підфункція

00h - завантажити шрифт користувача

ES:DI покажчик на перший символ шрифтової таблиці

CX кількість символів для запису (1-256)

DX зміщення 1-го символа частини таблиці, що завантажується

BL шрифтовий блок для завантаження

0 - основний шрифт (блок 0)

1 - додатковий шрифт (блок 1)

BH байт на символ (1-255)

01h - завантажити шрифтовий блок що використовується системою за умовчанням

BL шрифтовий блок для завантаження

0 - основний шрифт (блок 0)

1 - додатковий шрифт (блок 1)

02h - задати інтенсивність атрибутів рідкокристалічного екрана

BL схема використання атрибута підвищеної інтенсивності

0 - ігнорувати атрибути з підвищеною інтенсивністю

1 - символи з атрибутами підвищеної інтенсивності відобра-

жати в позитиві

2 - символи з атрибутами підвищеної інтенсивності відобра-

жати в режимі підкреслення

Повертає: нічого

15h Фізичні характеристики монітора

Повертає тип додаткового відеоконтролера і таблицю характеристик по-

точного монітора (тільки на сумісних з PC).

На вхід: AH 15h

Повертає: AX тип додаткового відеоконтролера

00h - немає

5140h - LCD

5153h - CGA

5151h - монохромний відеоконтроллер

ES:DI адреса таблиці характеристик (див. нижче)

Формат таблиці характеристик:

слово 1 - тип відеоконтролера

слово 2 - розмір точки по вертикалі (число точок на метр)

слово 3 - розмір точки по горизонталі (число точок на метр)

слово 4 - кількість точок по вертикалі на екран

слово 5 - кількість точок по горизонталі на екран

слово 6 - висота точки в мікрометрах

слово 7 - ширина точки в мікрометрах

INT 16h

00h Прочитати з буфера клавіатури

Витягує з буфера клавіатури код і скан-код наступної натисненої клавіші; як-

що буфер клавіатури пустий, функція чекає натиснення клавіші.

На вхід: AH 00h

Повертає: AL ASCII-код символа

AH скан-код

01h Стан буфера клавіатури

Перевіряє, чи не пустий буфер клавіатури. Якщо буфер клавіатури не пустий, пове-

ртає код і скан-код наступної клавіші з буфера.

На вхід: AH 01h

Повертає: CF (прапор перенесення) = 0, якщо буфер не пустий

1, якщо буфер пустий

AL ASCII-код символа (якщо буфер не пустий)

AH скан-код (якщо буфер не пустий)

02h Стан клавіш розширення клавіатури

Повертає стан клавіш розширення клавіатури (Shift, Ctrl, Alt і др.).

На вхід: AH 02h

Повертає: AL стан клавіш розширення

Стан клавіш розширення, що повертається в регістрі AL:

Номери біт --¦ 7 6 5 4 3 2 1 0

х. ...... Insert активована

. х. ..... Caps Lock активована

.. х. .... Num Lock активована

... х. ... Scroll Lock активована

.... х. .. Alt натиснена

..... х. . Ctrl натиснена

...... х. Лівий Shift натиснений

....... х Правий Shift натиснений

03h Швидкість повторного читання (PCjr, XT-286, AT)

Встановлює швидкість повторного читання натисненої клавіші і час затримки від

першого читання з клавіатури до повторного.

На вхід: AH 03h

AL підфункція

0 - повернути до стану за умовчанням

1 - збільшити затримку

2 - сповільнити швидкість повторного читання

в 2 рази

3 - виконати підфункції 1 і 2

4 - відмінити повторне читання

5 - встановити швидкість повторного читання і затримку:

BL - швидкість читання (див. нижче)

BH - величина затримки (див. нижче)

Повертає: нічого

04h Звук при читанні з клавіатури (PCjr, РС-сумісні.)

Дана функція дозволяє включити і вимкнути звук, супроводжуючий читання

коду натисненої клавіші.

На вхід: AH 04h

AL 0 - відключити

1 - включити

Повертає: нічого

05h Записати в буфер клавіатури (XT-286, AT)

Записує код і скан-код в буфер клавіатури.

На вхід: AH 05h

CH скан-код

CL ASCII-код символа

Повертає: AL 00h - операція завершена успішно

01h - буфер переповнений

10h Прочитати з буфера розширеної клавіатури

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

На вхід: AH 00h

Повертає: AL ASCII-код символа

AH скан-код

11h Стан буфера розширеної клавіатури

Перевіряє, чи не пустий буфер клавіатури. Якщо буфер клавіатури не пустий, пове-

ртає код і скан-код наступної клавіші з буфера. Дана функція працює

тільки з 101/102-клавішний клавіатурою.

На вхід: AH 01h

Повертає: CF (прапор перенесення) = 0, якщо буфер не пустий

1, якщо буфер пустий

AL ASCII-код символа (якщо буфер не пустий)

AH скан-код (якщо буфер не пустий)

12h Стан розширеної клавіатури

Повертає стан клавіш розширення клавіатури (Shift, Ctrl, Alt і др.).

Дана функція працює тільки з 101/102-клавішний клавіатурою.

На вхід: AH 02h

Повертає: AL стан клавіш розширення

AH стан додаткових клавіш розширення

*****************************************************************************

[CP-1251 (Windows russian) -> CP-866 (DOS russian )]

xlt db 000h, 001h, 002h, 003h, 004h, 005h, 006h, 007h, 008h, 009h, 00ah, 00bh,

db 00ch, 00dh, 00eh, 00fh, 010h, 011h, 012h, 013h, 014h, 015h, 016h, 017h,

db 018h, 019h, 01ah, 01bh, 01ch, 01dh, 01eh, 01fh, 020h, 021h, 022h, 023h,

db 024h, 025h, 026h, 027h, 028h, 029h, 02ah, 02bh, 02ch, 02dh, 02eh, 02fh,

db 030h, 031h, 032h, 033h, 034h, 035h, 036h, 037h, 038h, 039h, 03ah, 03bh,

db 03ch, 03dh, 03eh, 03fh, 040h, 041h, 042h, 043h, 044h, 045h, 046h, 047h,

db 048h, 049h, 04ah, 04bh, 04ch, 04dh, 04eh, 04fh, 050h, 051h, 052h, 053h,

db 054h, 055h, 056h, 057h, 058h, 059h, 05ah, 05bh, 05ch, 05dh, 05eh, 05fh,

db 060h, 061h, 062h, 063h, 064h, 065h, 066h, 067h, 068h, 069h, 06ah, 06bh,

db 06ch, 06dh, 06eh, 06fh, 070h, 071h, 072h, 073h, 074h, 075h, 076h, 077h,

db 078h, 079h, 07ah, 07bh, 07ch, 07dh, 07eh, 07fh, 03fh, 03fh, 027h, 03fh,

db 022h, 03ah, 0c5h, 0d8h, 03fh, 025h, 03fh, 03ch, 03fh, 03fh, 03fh, 03fh,

db 03fh, 027h, 027h, 022h, 022h, 007h, 02dh, 02dh, 03fh, 054h, 03fh, 03eh,

db 03fh, 03fh, 03fh, 03fh, 0ffh, 0f6h, 0f7h, 03fh, 0fdh, 03fh, 0b3h, 015h,

db 0f0h, 063h, 0f2h, 03ch, 0bfh, 02dh, 052h, 0f4h, 0f8h, 02bh, 049h, 069h,

db 03fh, 0e7h, 014h, 0fah, 0f1h, 0fch, 0f3h, 03eh, 03fh, 03fh, 03fh, 0f5h,

db 080h, 081h, 082h, 083h, 084h, 085h, 086h, 087h, 088h, 089h, 08ah, 08bh,

db 08ch, 08dh, 08eh, 08fh, 090h, 091h, 092h, 093h, 094h, 095h, 096h, 097h,

db 098h, 099h, 09ah, 09bh, 09ch, 09dh, 09eh, 09fh, 0a0h, 0a1h, 0a2h, 0a3h,

db 0a4h, 0a5h, 0a6h, 0a7h, 0a8h, 0a9h, 0aah, 0abh, 0ach, 0adh, 0aeh, 0afh,

db 0e0h, 0e1h, 0e2h, 0e3h, 0e4h, 0e5h, 0e6h, 0e7h, 0e8h, 0e9h, 0eah, 0ebh,

db 0ech, 0edh, 0eeh, 0efh

Цель работы: Ознакомиться с механизмом прерываний; получить практические навыки разработки программ с использованием прерываний; ознакомиться с основными прерываниями DOS и BIOS.

Соседние файлы в папке SP_ukr