На этом шаге мы рассмотрим вызов функций 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. Сразу после запуска программы должен появиться большой курсор. К сожалению, курсор может принять свой прежний вид, т.к. другие программы могут изменять, но не восстанавливать форму курсора.
На следующем шаге мы рассмотрим написание процедур обработки прерываний.