- •Методические указания к выполнению работы Внутренняя организация мп семейства 80х86 в реальном режиме работы
- •Внутренние регистры мп
- •Организация памяти
- •Система прерываний мп
- •Аппаратные прерывания в ibm pc
- •Выполнение работы
- •0: (Ax,bx,cx,dx,bp,si,di,ds,es,Flags: Word); {16-ти разр. Регистры}
- •1: (Al,ah,bl,bh,cl,ch,dl,dh); {8-ми разр. Регистры}
- •Контрольные вопросы
- •Методические указания к выполнению работы
- •Контрольные вопросы
- •Лабораторная работа № 3 Средства ос Windows для управления процессами и потоками
- •Подготовка к работе
- •Программа работы
- •Методические указания к выполнению работы Управление процессами и потоками в ос Windows
- •Выполнение работы
- •Контрольные вопросы
- •Методические указания
- •0: XPos: SmalInt; {либо как координаты X и y}
- •1: Pos: tSmallPoint; {или как одна точка]
- •Контрольные вопросы
- •Методические указания к выполнению работы Получение информации о логических дисках, томах и файлах
- •Выполнение работы
- •Контрольные вопросы
- •Библиографический список
Система прерываний мп
Прерывание – это событие, которое прерывает нормальный ход выполнения программы (процесса).
МП 80х86 имеет эффективную систему прерываний, в которой каждому прерыванию поставлен в соответствие код (от 0 до 255), который идентифицирует тип прерывания. В системах с МП 8086 различают внешние и внутренние прерывания.
Внешние прерывания – это прерывания, обусловленные каким-либо внешним событием. Сигнал свершения этого события поступает на один из двух входов МП:
INTR – вход маскируемого запроса прерывания от внешних устройств;
NMI – вход немаскируемого запроса прерывания.
Для разрешения обслуживания внешних прерываний используется выход подтверждения прерывания .
МП имеет только один вход для запроса прерывания, а устройств, требующих обслуживания по прерыванию в системе может быть несколько. Для обслуживания прерываний от нескольких устройств используется специализированная МС - программируемый контроллер прерывания (ПКП). ПКП выполняет следующие основные функции:
фиксирует запросы прерываний от внешних устройств;
анализирует приоритеты поступивших прерываний;
запрашивает у МП и, в случае подтверждения прерывания, выдает МП номер прерывания с наивысшим приоритетом.
При поступлении на один из входов ПКП IRQ0-IRQ7 запроса прерывания от внешнего устройства (рис. 3), ПКП фиксирует это прерывание, анализирует его приоритет и, если поступившее прерывание имеет наивысший в данный момент приоритет, выдает МП сигнал запроса прерывания INTR. При поступлении на вход INTR сигнала высокого уровня процессор заканчивает выполнение текущей команды и выдает сигнал подтверждения прерывания , который поступает на соответствующий вход ПКП. В ответ на этот сигнал ПКП процессору информации не передает. Затем процессор вырабатывает еще один сигнал , в ответ на который ПКП передает МП по шине данных байт, определяющий номер (тип) прерывания (0255). Этот номер однозначно связан с ПП обслуживания прерывания, на которую затем переходит процессор.
рис. 3
Прерывания по входу INTR можно разрешить или запретить(замаскировать), управляя состоянием флага I. Для этих целей имеются две специальные команды:
CLI – очистить флаг I=0 (запретить прерывания по входу INTR);
STI – установить флаг I=1 (разрешить прерывания по входу INTR).
Если пришел запрос прерывания, а прерывания были запрещены (I=0), то процессор не обслуживает этот запрос и не запоминает его.
Запрос прерывания по входу NMI является немаскируемым и программно его запретить нельзя. После появления сигнала на входе NMI процессор автоматически переходит к обслуживанию прерывания типа 2 (подтверждение прерывания при этом не требуется). Обычно сигнал запроса прерывания по входу NMI используют события, требующие немедленной обработки (например, аварийное отключение питания).
Запрос прерывания по входу NMI запоминается в МП и имеет более высокий приоритет, чем прерывания по входу INTR.
Внутренние прерывания связаны с определенными событиями внутри процессора или инициируются при помощи команд. В случае внутренних прерываний не вырабатываются сигналы подтверждения прерываний , процессор просто переходит по вектору, заданному типом прерывания. Виды внутренних прерываний:
прерывание при ошибке деления на “0”. Возникает в том случае, если частное слишком велико или делитель = 0 (тип 0);
прерывание по переполнению. Выполняется по команде INTO при условии, что установлен флаг переполнения V=1 (тип 4);
прерывание при трассировке. Возникает по окончании команды, если установлен флаг трассировки Т=1 (тип 1);
прерывание типа 3. Возникает при выполнении однобайтной команды INT 3. Используется для установки контрольных точек разрыва при отладке программ.
программные прерывания при выполнении двухбайтных команд INT n (где n – номер прерывания). Программные прерывания на самом деле ничего не прерывают, а являются удобным средством для доступа к стандартным подпрограммам (функциям ОС).
Рассмотрим взаимосвязь между типом прерывания и п/пр обслуживания прерываний.
Таблица векторов прерываний
рис. 4
Для обслуживания прерываний в системах с МП 8086 используется таблица векторов прерываний объемом 1Кбайт, расположенная с нулевого адреса памяти (0...3FF). На каждый тип прерывания отводится 2 слова (4 байта) памяти, в которых хранится логический адрес п/пр обслуживания прерывания. Слово с большим адресом загружается в сегментный регистр CS, а с меньшим адресом – в регистр указателя команд IP. Таблица векторов прерываний имеет вид представленный на рис. 4.
Таким образом, получив номер типа прерывания, процессор умножает номер типа прерывания на 4 и получает адрес вектора прерывания. При переходе к п/пр обслуживания прерываний МП сохраняет в стеке содержимое CS,IP,F. Затем CS и IP загружаются новым содержимым из вектора прерываний. Возврат из п/пр осуществляется по команде IRET, которая восстанавливает содержимое регистров CS,IP,F из стека.