Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia_8-11_Massivy-struktury.doc
Скачиваний:
11
Добавлен:
21.12.2018
Размер:
1.47 Mб
Скачать

Обзор прерываний bios

Получение информации об оборудовании

INT 11h - Получить список оборудования.

Прежде чем пытаться работать с каким-либо устройством ввода/вывода, следует убедиться в том, что оно есть в составе оборудования компьютера. В процессе инициализации тестовые модули, находящиеся в BIOS, динамически определяют состав аппаратного обеспечения машины и записывают конфигурацию системы в специально отведенную для этого ячейку памяти.

Программа, вызывая прерывание INT 11h, получает в регистре AX содержимое этой ячейки. Каждый бит в слове конфигурации отвечает за соответствующее устройство.

Если например, программа обращается непосредственно к портам ввода/вывода отсутствующего устройства, то это может привести к зависанию системы. Что бы этого не случилось, необходимо заранее знать о наличии различных устройств в системе.

Значения битов в регистре AX:

Биты Значение

0 1 - система содержит НМД;

0 - система не содержит НМД.

1 1 - установлен арифметический сопроцессор;

0 - арифметический сопроцессор не установлен.

2-3 Объем основной памяти, установленной на материнской плате:

Биты: 3 2

0 1 - 16К;

1 0 - 32К;

1 1 - 64К и более.

4-5 Тип дисплейного контроллера и его режим:

Биты: 5 4

0 0 - не используется или EGA;

0 1 - CGA, EGA, VGA в режиме

40x25;

1 0 - CGA, EGA, VGA в режиме

80x25;

1 1 - монохромный контроллер.

6-7 Количество установленных НГМД:

Биты: 7 6

0 0 - установлен 1 НГМД;

0 1 - установлено 2 НГМД;

1 0 - установлено 3 НГМД;

1 1 - установлено 4 НГМД.

8 1 - используется контроллер прямого доступа к памяти;

0 - контроллер прямого доступа к памяти не используется.

9-11 Количество установленных портов последовательной передачи данных RS232S:

000 - нет портов;

001 - используется один порт;

.............

111 - используется 7 портов.

12 1 - используется игровой адаптер (джойстик);

0 - игровой адаптер не используется.

13 1 - установлен последовательный принтер (только для PC Jr).

14-15 Количество установленных принтеров:

00 - нет принтеров;

01 - используется 1 принтер;

10 - используется 2 принтера;

11 - используется 3 принтера.

INT 12h - Получить размер основной памяти.

Прерывание INT 12h возвращает в регистре AX количество имеющихся блоков памяти размером в один килобайт.

Если Ваш компьютер оборудован расширенной памятью (адресное пространство этой памяти находится выше границы в 1 мегабайт), размер этой памяти в килобайтах можно узнать, вызвав прерывание INT 15h со значением регистра AX, равным 8800h.

Возвращает в регистре AX размер памяти в килобайтах, например, 200h соответствует памяти в 512 К. Данная операция полезна для выравнивания размера программы в соответствии с доступной памятью.

Работа с дисплейным адаптером.

При вызове прерывания INT 10h, как и при вызове многих других прерываний, регистр AH содержит номер функции, которую требуется выполнить. Остальные регистры при вызове прерывания содержат операнды. Приведем краткий обзор функций прерывания INT 10h.

00h - Задание видеорежима.

В процессе инициализации BIOS задает начальный режим адаптера исходя из его типа. Если программе нужен другой режим, отличный от исходного, то необходимо использовать эту функцию. При этом необходимо учитывать, что дисплейные адаптеры могут поддерживать не все режимы.

При вызове:

AH=00h

АL=видеорежим:

Основные графические режимы VGA

Номер режима

Разрешение

Число цветов

11h

640x480

2

12h

640x480

16

13h

320x200

256

Стандартные графические режимы SVGA могут быть 4-, 8-, 15-, 16-, 24- и 32-битными.

1) 4-битные режимы (16 цветов):

VGA

012h: 640x480 (64 Кб)

VESA VBE 1.0

102h: 800x600 (256 Кб)

104h: 1024x768 (192 Кб)

106h: 1280x1024 (768 Кб)

Каждый пиксель описывается одним битом, для вывода цветного изображения требуется программирование видеоадаптера на уровне портов ввода-вывода (глава 5.10.4).

2) 8-битные режимы (256 цветов):

VGA

013h: 320x200 (64 Кб)

VBE 1.0

100h: 640x400 (256 Кб)

101h: 640x480 (320 Кб)

103h: 800x600 (512 Кб)

105h: 1024x768 (768 Кб)

107h: 1280x1024 (1,3 Мб)

VBE 2.0

120h: 1600x1200 (1,9 Мб)

Каждый пиксель описывается ровно одним байтом. Значение байта — нoмер цвета из палитры, значения цветов которой можно изменять, например вызывая подфункцию 09 видеофункции 4Fh.

3) 15-битные режимы (32 К цветов):

VBE 1.2

10Dh: 320x200 (128 Кб)

110h: 640x480 (768 Кб)

113h: 800x600 (1 Мб)

116h: 1024x768 (1,5 Мб)

119h: 1280x1024 (2,5 Мб)

VBE 2.0

121h: 1600x1200 (3,8 Мб)

Каждый пиксель описывается ровно одним словом (16 бит), в котором биты 0 – 4 содержат значение синей компоненты цвета, биты 5 – 9 — зеленой, а биты 10 – 14 — красной. Бит 15 не используется.

4) 16-битные режимы (64 К цветов):

VBE 1.2

10Eh: 320x200 (128 Кб)

111h: 640x480 (768 Кб)

114h: 800x600 (1 Мб)

117h: 1024x768 (1,5 Мб)

11Ah: 1280x1024 (2,5 Мб)

VBE 2.0

121h: 1600x1200 (3,8 Мб)

Так же как и в 15-битных режимах, каждый пиксель описывается ровно одним словом. Обычно биты 0 – 4 (5 бит) содержат значение синей компоненты, биты 5 – 10 (6 бит) — зеленой, а биты 11 – 15 (5 бит) — красной. В нестандартных режимах число бит, отводимое для каждого цвета, может отличаться, так что при их использовании следует вызвать подфункцию 01 видеофункции 4Fh и получить информацию о видеорежиме, включающую битовые маски и битовые смещения для цветов.

5) 24-битные и 32-битные режимы (16 М цветов):

VBE 1.2

10Fh: 320x200 (192 Кб)

112h: 640x480 (1 Мб)

115h: 800x600 (1,4 Мб)

118h: 1024x768 (2,3 Мб)

11Bh: 1280x1024 (3,7 Мб)

VBE 2.0

122h: 1600x1200 (7,7 Мб)

01h - Установить характеристики курсора.

С помощью этой функции вы можете установить размер и форму курсора, сделать курсор мигающим или убрать его совсем.

02h - Установить положение курсора.

Эта функция позволяет управлять расположением курсора на экране, в частности, один из способов убрать курсор - расположить его за пределами экрана, например, на несуществующей 26 строке.

03h - Получить положение курсора.

Программа может узнать в любое время, где расположен курсор. Это может потребоваться ей, например, для того, чтобы переместить курсор в следующую позицию (вправо, вверх, вниз, на 10 символов левее текущего положения и т.д.).

04h - Получить положение светового пера.

Световое перо используется относительно редко, однако если оно есть, то функция 04h позволит вам работать с этим устройством.

05h - Выбрать активную страницу дисплейной памяти.

Компьютер хранит, как правило, не один отображаемый образ экрана, а несколько. Для этого видеопамять (память для хранения видеоизображения, находится на плате видеоконтроллера) разбивается на так называемые страницы. Отображается только активная страница видеопамяти.

Используя механизм страниц, программа может заранее подготовить изображение в неактивной странице, затем сделать подготовленную страницу активной. Изображение новой страницы мгновенно появится на экране.

Некоторые отладчики программ используют одну страницу видеопамяти для отлаживаемой программы, другую - для выдачи своих диагностических сообщений.

06h, 07h - Прокрутка (скроллинг) окна вверх/вниз.

С помощью этих функций вы сможете переместить выбранную область окна на заданное число строк вверх или вниз. Освободившееся место будет заполняться пустыми строками. Одно из применений этой функции - полная очистка экрана.

08h, 09h - Прочитать/записать символ и атрибут.

С помощью этих функций можно прочитать или записать символ и его атрибут. При записи символа можно задать число повторений. Функцию записи с повторением удобно использовать для заполнения области экрана каким-либо символом.

Запись/чтение символа начинается с текущего положения курсора.

0Ah - Записать символ.

Эта функция предназначена для записи символа в видеопамять без задания для него индивидуального значения атрибута. Используется текущий атрибут. Можно задавать кратность записи.

0Bh - Выбрать цветовую палитру.

Эта функция позволяет управлять цветом рамки вокруг изображения в текстовом режиме и цветом фона в графическом режиме (для адаптеров EGA, VGA).

0Ch, 0Dh - Записать/прочитать графическую точку.

Можно высветить точку заданного цвета в заданном месте экрана для выбранной дисплейной страницы или прочитать значение цвета любой точки на экране соответственно.

При вызове:

AH=0Ch

АL=цвет (номер цветового регистра)

ВН=страница

СХ=графический столбец

ВХ=графическая строка

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]