Шаг 15.
Оптимизация с помощью ассемблера.
Использование прерываний.

    На этом шаге мы рассмотрим использование прерываний.

    Прерывания останавливают выполнение программы, затем какое-то время выполняются некоторые действия, после чего вновь возобновляется выполнение программы с того же места, на котором она была прервана. Компьютерные устройства могут вырабатывать сигнал прерывания, чтобы уведомить компьютер о таких внешних событиях, как нажатие на клавишу или щелчок мыши. Процедура обработки прерывания реагирует на сигнал прерывания и возвращает управление прерванной программе, выполняя инструкцию iret (interrupt return - возврат из прерывания). Вы можете писать свои обработчики прерываний на C и C++, однако большинство программистов пользуются в таких случаях ассемблером для достижения наибольшей производительности.

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

 asm int 0x21   //Вызвать диспетчер функций DOS

    Для использования одной из функций BIOS в программе вызывается диспетчер BIOS:

 asm int 0x10   //Вызвать диспетчер функций BIOS

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

    На следующем шаге мы рассмотрим обращение к функциям DOS.




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