
-
Прерывания dos и bios
-
Функції 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.