Прерывания. Обработка прерываний в реальном режиме работы микропроцессора

Содержание

Слайд 2

Понятие прерывания

Прерывание означает временное прекращение основного процесса вычислений для выполнения некоторых запланированных

Понятие прерывания Прерывание означает временное прекращение основного процесса вычислений для выполнения некоторых
или незапланированных действий, вызываемых работой аппаратуры или программы.
Т.е. это процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возвратом к прерванной программе.

Слайд 3

Обработчик прерывания

Программа обработки прерывания называется обработчиком прерывания.

Int №

Обработчик
прерывания

прерванная программа
продолжит выполнение

Обработчик прерывания Программа обработки прерывания называется обработчиком прерывания. Int № Обработчик прерывания
с точки,
где было приостановлено ее выполнение
(со следующей команды)

!

Слайд 4

Классификация прерываний (в зависимости от источника прерывания)

аппаратные - возникают как реакция микропроцессора на

Классификация прерываний (в зависимости от источника прерывания) аппаратные - возникают как реакция
физический сигнал от некоторого устройства (клавиатура, системные часы, жесткий диск, принтер и т.д.)
при нажатии клавиши на клавиатуре вызывается аппаратное прерывание, при котором считывается код нажатой клавиши
при перемещение мыши вызывается аппаратное прерывание, при котором считываются координаты положения мыши
программные - вызываются искусственно с помощью соответствующей команды из программы (int), предназначены для выполнения некоторых действий операционной системы
исключения - являются реакцией микропроцессора на нестандартную ситуацию, возникшую внутри микропроцессора во время выполнения некоторой команды программы (ошибки или исключительные ситуации, которые не могут быть обработаны самой программой, например, деление на 0)

Слайд 5

Другая классификация

Внешние - вызываются внешними по отношению к микропроцессору событиями
(по существу

Другая классификация Внешние - вызываются внешними по отношению к микропроцессору событиями (по
- это группа аппаратных прерываний)
Внутренние - возникают внутри микропроцессора во время вычислительного процесса
(по существу - это исключительные ситуации и программные прерывания)

Слайд 6

Виды прерываний

Маскируемое прерывание (IRQ)
аппаратное прерывание, которое можно игнорировать, (путем установки бита в

Виды прерываний Маскируемое прерывание (IRQ) аппаратное прерывание, которое можно игнорировать, (путем установки
регистре IMR
Немаскируемое прерывание (NMI)
аппаратное прерывание, которое нельзя игнорировать. NMI используются для задач с высшим приоритетом, например таких как таймеры
Межпроцессорное прерывание (IPI): особый случай прерывания, которое генерируется одним процессором для прерывания другого процессора в многопроцессорной системе

Слайд 7

Программное прерывание

Программное прерывание

Слайд 8

Программные прерывания

Обработка машинной команды
int N
это программное прерывание
int (interrupt –

Программные прерывания Обработка машинной команды int N это программное прерывание int (interrupt
англ. прерывание)
N – номер (имя) прерывания
С помощью программных прерываний программист может обратиться в нужное для него время за обслуживанием своих запросов либо к ОС, либо к BIOS, либо к собственным обработчикам прерываний.

Слайд 9

Пример. Прерывание 21h (DOS) Как это работает?

21 – номер (имя) прерывания, h –

Пример. Прерывание 21h (DOS) Как это работает? 21 – номер (имя) прерывания,
обозначение 16-ричной системы счисления
Прерывание 21h предназначено для предоставления программисту различных услуг со стороны ОС
Этими услугами является набор функций
Примеры функций
00h - завершение работы программы
01h - ввод символа с ожиданием и эхосопровождением.
На выходе из функции в регистре AL будет ACSII-код символа.
02h - вывод символа
На входе в регистр DL надо поместить ACSII-код символа
05h - вывод символа на принтер
На входе в регистр DL надо поместить ACSII-код символа
09h - вывод строки на экран
Пара регистров ds:dx должна содержать адрес строки, стока записана в сегменте данных
0ah - ввод строки с клавиатуры
……..

Внимание.
Функции запоминать не надо,
это будет изучаться
при программировании
на языке Ассемблер

Слайд 10

Использование функций 21h Как это программируется?

Поместить номер функции в регистр ah
Поместить передаваемые функции

Использование функций 21h Как это программируется? Поместить номер функции в регистр ah
параметры в определенные регистры (для каждой функции соответствующие, см. документацию)
Вызвать прерывание командой int 21h
Извлечь результаты работы функции из определенных регистров

Слайд 11

Пример

Вывод строки на экран
message db 'Это строка’,’$'
mov ah,09h
mov dx,offset message
int 21h

09h - вывод строки на экран
На

Пример Вывод строки на экран message db 'Это строка’,’$' mov ah,09h mov
входе
в ds:dx адрес строки
с символом $ на конце

Слайд 12

Пример. Вывод строк на экран

masm
model small
.stack 100h
.data
message1 db 'Это первая строка’,’$'
message2 db 'Это вторая строка $'
.code
start:
mov ax,@data
mov ds,ax
mov ah,09h
mov dx,offset message1
int 21h
mov dx,offset message2
int 21h
mov ax,4c00h

Пример. Вывод строк на экран masm model small .stack 100h .data message1
; стандартный выход - ah=00h
int 21h
end start

Слайд 13

Система прерываний

Система прерываний - это совокупность программных и аппаратных средств, реализующих механизм

Система прерываний Система прерываний - это совокупность программных и аппаратных средств, реализующих
прерываний
Механизм прерываний поддерживается на аппаратном уровне

i

Слайд 14

Аппаратные средства системы прерываний

выводы микропроцессора
(INTR, INTA, NMI)
программируемый контроллер прерываний (8259А,

Аппаратные средства системы прерываний выводы микропроцессора (INTR, INTA, NMI) программируемый контроллер прерываний
микросхема)
предназначен для фиксирования сигналов прерываний от восьми различных внешних устройств;
обычно используют две последовательно соединенные микросхемы, поэтому кол-во возможных источников внешних прерываний до 15 плюс одно немаскируемое прерывание;
именно он формирует номер вектора прерывания и выдает его на шину данных
внешние устройства

Слайд 15

Программные средства системы прерываний

Таблица векторов прерываний
Первый килобайт ОП (в реальном режиме 16-разрядных

Программные средства системы прерываний Таблица векторов прерываний Первый килобайт ОП (в реальном
процессоров). Содержит адреса (векторы) обработчиков прерываний.
Два флага в регистре флагов flags/eflags:
- IF (Interrupt Flag) - флаг прерывания.
Предназначен для маскирования (запрещения) аппаратных прерываний.
Если IF=1, микропроцессор обрабатывает внешние прерывания,
Если IF = 0, то игнорирует
- TF(Trace Flag) - флаг трассировки.
Если TF=1, то микропроцессор переходит в режим покомандной работы.
В этом режиме в микропроцессоре генерируется внутреннее прерывание с номером 1
Машинные команды микропроцессора:
int, into, iret, cli, sti

Слайд 16

Таблица векторов прерываний (в реальном режиме)

Содержит адреса (векторы) обработчиков прерываний
Адреса строго

Таблица векторов прерываний (в реальном режиме) Содержит адреса (векторы) обработчиков прерываний Адреса
упорядочены в соответствии с номерами прерываний!
Состоит из 256 элементов по 4 байта каждый
Структура элемента:
2 байта - смещение начала программы-обработчика прерывания от начала кодового сегмента (IP)
2 байта - базовый адрес сегмента, в котором находится программа-обработчик (CS)

Как определить адрес,
по которому находится вектор прерывания с номером N ?
Смещение элемента таблицы векторов прерываний = N * 4

Полный размер таблицы?
4*256=1024
Первый килобайт ОП

Слайд 17

Обработка прерываний в реальном режиме работы микропроцессора

производится в 3 этапа:
прекращение выполнения

Обработка прерываний в реальном режиме работы микропроцессора производится в 3 этапа: прекращение
текущей программы;
переход к выполнению и выполнение программы обработки прерывания;
возврат управления прерванной программе

Слайд 18

Программное прерывание

Адрес следующей выполнимой команды –
в паре регистров CS:IP

Программное прерывание Адрес следующей выполнимой команды – в паре регистров CS:IP

Слайд 19

ЭТАП 1. Прекращение выполнения текущей программы

Должно произойти так, чтобы потом можно

ЭТАП 1. Прекращение выполнения текущей программы Должно произойти так, чтобы потом можно
было вернуться и продолжить работу
⇒ необходимо сохранить содержимое регистров, так как они являются ресурсами, разделяемыми между программами
Обязательными для сохранения являются регистры cs, ip, flags
пара CS:IP содержит адрес команды, с которой необходимо начать выполнение после возврата, flags - состояние флагов после выполнения последней команды прерванной программы
Эти регистры сохраняются микропроцессором автоматически в стеке
Сохранение остальных регистров - должно обеспечиваться программистом !!!

Слайд 20

Int №

CS

IP

FLAGS

IP

FLAGS

Содержимое регистров CS, IP, FLAGS
копируется в стек программы

CS

Сегмент стека программы

С
Е
Г
М
Е
Н
Т
К
О
Д
А

Сегмент
данных

Вопрос.
А

Int № CS IP FLAGS IP FLAGS Содержимое регистров CS, IP, FLAGS
что будет,
если стек полон?
(переполнение стека)



Слайд 21

Этап 2. Переход к выполнению и выполнение программы обработки прерывания (обработчика прерывания)

Микропроцессор
По номеру

Этап 2. Переход к выполнению и выполнение программы обработки прерывания (обработчика прерывания)
источника прерывания определяет смещение в таблице векторов прерываний
Помещает первые два байта в регистр IP
Помещает вторые два байта в регистр CS
Передает управление по адресу CS:IP
Далее выполняется сама программа обработки прерывания.

Слайд 22

Этап 3. Возврат управления прерванной программе

Необходимо привести стек в состояние, в котором

Этап 3. Возврат управления прерванной программе Необходимо привести стек в состояние, в
он был сразу после передачи управления обработчику прерывания
Для этого программист должен указать необходимые действия по восстановлению регистров и очистке стека.
Последние команды в обработчике прерывания –
sti
iret
sti - разрешить аппаратные прерывания (устанавливает флаг IF=1, не имеет операндов)
iret - извлечь последовательно три слова (3*2 байта) из стека и поместить их соответственно в регистры ip, cs, flags.

i

Слайд 23

Таблица IDT (Interrupt Description Table)

Таблица дескрипторов прерываний
256 прерываний (как и в реальном

Таблица IDT (Interrupt Description Table) Таблица дескрипторов прерываний 256 прерываний (как и
режиме)
дескрипторы строго упорядочены в соответствии с номерами прерываний
Состоит из 256 элементов (строк) по 8 байтов каждый
Таблица векторов прерываний – по 4 байта
Каждый дескриптор (строка) содержит адрес обработчика прерывания

Как определить адрес,
по которому находится дескриптор прерывания с номером N ?
Адрес таблицы дескрипторов прерываний - в регистре idtr
Смещение элемента в таблице IDT = N * 8

Слайд 24

Схема поиска обработчика прерывания в защищенном режиме работы микропроцессора

IDT –
(Interrupt
Descriptions
Table)

Схема поиска обработчика прерывания в защищенном режиме работы микропроцессора IDT – (Interrupt

таблица
дескрипторов
прерываний
Имя файла: Прерывания.-Обработка-прерываний-в-реальном-режиме-работы-микропроцессора.pptx
Количество просмотров: 36
Количество скачиваний: 0