Шаг 17.
Оптимизация с помощью ассемблера.
Использование прерываний. Вызов функций BIOS

    На этом шаге мы рассмотрим вызов функций BIOS.

    Ещё один набор процедур обеспечивает ввод-вывод для отдельных компонентов компьютера. Набор обработчиков прерываний и другие процедуры хранятся в ПЗУ и известны под названием BIOS (базовая система ввода-вывода). Чаще всего эти процедуры вызываются с помощью программных инструкций прерывания.


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

    В листинге 1 демонстрируется вызов прерывания BIOS, в данном случае для изменения формы курсора. Скомпилируйте и запустите программу для изменения вашего курсора из обычного тонкого в большой, который легче рассмотреть на экране. (Для восстановления первоначальной формы курсора следует перезагрузиться.)

    Листинг 1. BIGC.CPP (установка большого курсора)

main ()
{
asm {
       mov ch, 0 //Задать верхнюю строку курсора
       mov cl, 7 //Задать число строк курсора
       mov ah,1  //Задать видеопроцедуру  BIOS #1
       int 0x10  //Вызвать BIOS для изменения формы курсора
}
return 0;
}      
Текст программы можно посмотреть здесь

    Единственный оператор asm выполняет все действия в этой программе: вызывает видеопроцедуру BIOS для изменения формы текстового курсора. Сначала инициализируются регистры ch и cl значениями, соответствующими числу и начальной позиции горизонтальных линий, образующих видимый курсор. (Если вы присмотритесь к текстовому курсору, то сможете рассмотреть эти линии на некоторых типах дисплеев.) Поэкспериментируйте с этими двумя значениями для создания множества форм курсора. В регистр ah запоминается идентификационный номер видео-процедуры BIOS, отвечающей за изменение формы курсора. После всех этих подготовительных действий вызывается обработчик прерывания BIOS с помощью выполнения int 0x10 аналогично тому, как в предыдущей программе вызывался диспетчер функций DOS. Сразу после запуска программы должен появиться большой курсор. К сожалению, курсор может принять свой прежний вид, т.к. другие программы могут изменять, но не восстанавливать форму курсора.

    На следующем шаге мы рассмотрим написание процедур обработки прерываний.




Предыдущий шаг Содержание Следующий шаг