"П.Нортон "Программно-аппаратная организация компьютера IBM PC"" - читать интересную книгу автора Аппаратные прерывания мы уже рассмотрели - они вырабатываются
устройствами, требующими внимания процессора. В IBM/PC таких прерываний на удивление мало. Во-первых, имеется так называемое немаскируемое прерывание, используемое для сообщения об отказе питания, оно имеет номер 2. Далее, прерывание 8 используется таймером, номер 9 - клавиатурой и 14 - контролером гибких дисков, всего четыре аппаратных прерывания. Имеется также семь зарезервированных номеров прерываний, 6, 7, с 10 по 13 и 15, которые могут быть использованы в дальнейшем, если возникнет необходимость в дополнительных аппаратных прерываниях. Два из этих семи прерываний уже нашли свое назначение, прерывание 12 зарезервировано для адаптера связи, а прерывание 15 - для интерфейса устройства печати. Логические прерывания формируются самим процессором 8088, когда он встречает какое-либо необычное условие. Таких прерываний предусмотрено четыре. Прерывание 0 возникает при попытке деления на ноль. Прерывание 1 используется для управления пошаговым режимом работы микропроцессора, при котором команды выполняются по одной. Это прерывание выставляется отладчиками для пошагового выполнения программ. Прерывание 3 вырабатывается командой установки "контрольных точек", которая также используется при отладке. Прерывание 4 формируется при возникновении условия переполнения, например, если результат арифметической операции не помещается в регистр. Таким образом, четыре логических прерывания распадаются на две пары: одна для арифметических операций (деление на ноль и переполнение) и вторая для отладки программ (шаговый режим и контрольные точки). Наиболее интересны программные прерывания. Если программа должна этой процедуре. Обычно это делается с помощью команды CALL. Для вызова процедуры программа должна знать ее адрес, а вызываемая процедура может не знать адреса вызывающей программы, поскольку механизм вызова автоматически генерирует адрес возврата, который будет использован вызываемой программой после завершения ее выполнения. Образно говоря, для перехода к подпрограмме и возврата из нее достаточно купить билет в один конец - обратный билет предоставляется бесплатно. Идея организации программных прерываний должна позволять свободный переход и в прямом и в обратном направлении, то есть иметь возможность вызвать подпрограмму и получить управление обратно после ее завершения, так чтобы ни одна из сторон не могла не знать о местонахождении (адресе) другой. Программные прерывания обеспечивают такую возможность путем выработки прерывания самой программой. Например, если программе необходимо вычислить время дня, ей совершенно не требуется знать адрес программы подсчета времени - достаточно знать только, что программа подсчета времени дня запускается программным прерыванием 26. Программные прерывания используются для вызова всех служебных функций, представляемых обычным пользователям. Эти функции включают все процедуры системы BIOS и ПЗУ и служебные процедуры ДОС. Программные прерывания используются вместо непосредственных адресов по двум причинам. Наиболее важная причина состоит в обеспечении возможности изменения служебных процедур, вызываемых с помощью прерываний. Изменение процедуры обычно приводит к изменению ее размера и размещения в памяти. Если процедура вызывается с помощью прерывания, то использующие ее программы не |
|
|