русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Прерывание. Обработка прерываний


Дата добавления: 2013-12-23; просмотров: 1580; Нарушение авторских прав


Лекция №7

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

3 этапа:

Приостановление выполнения основного процесса

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

Возврат управления основному процессу

2 вида прерываний:

· Аппаратное

· Программное (функцию пишем сами, поддерживает система)

Адрес подпрограммы обработчика прерываний называется вектор. Длина 4 байта. В первом слове вектора хранится содержимое IP, во втором CS. Младшие 1024 байта памяти содержат таблицу, названную таблицей векторов прерывания. Младший байт слова всегда в памяти располагается первым.

Соответственно, если какой-то вектор

CS IP

AF20 : 3P8A

то в памяти он 8A3P20AF.

retn, rets, IRET

Для контроллера тоже должен быть сигнал окончания прерывания:

mov al, 20h

out 20h, al

В соответствии с описанием процессора некоторые вектора выполняют специфические действия, некоторые свободные.

0 вектор – деление на 0

1 номер – пошаговое выполнение

2 номер – немаскированное прерывание

3 номер – прерывание в точке останова

4 номер – переполнение

5 номер – печать содержимого экрана

8 номер – аппаратное прерывание на линии 0 (таймер)

9 номер – аппаратное прерывание на линии 1 (клавиатура)

0A номер – резерв

0B номер – аппаратное прерывание на линии 3 (COM 2)

0C номер – аппаратное прерывание на линии 4 (COM 1)

0D номер – аппаратное прерывание на линии 5 (жесткий диск)

0E номер – аппаратное прерывание на линии 6 (гибкий диск)

0F номер – аппаратное прерывание на линии 7 (принтер)

10 номер – обслуживание дисплея

11 номер – информация об оборудовании

12 номер – размер памяти

13 номер – обслуживание ввода- вывода на диске

14 номер – обслуживание последнего порта (использование либо 14 прерывания, либо путем записи управленческий слов в порт ввода- вывода)



16 номер – обслуживание клавиатуры

19 номер – перезагрузка системы

1A номер – получение установления даты и времени

1C номер – пользовательский таймер

Процессоры 8086 допускают обработку трех типов прерывания:

· Внутренне прерывание, генерируемое микропроцессором в случае возникновения особых ситуаций при его работе

· Немаскированное прерывание, которое используется для выявления ошибок в памяти

· Маскированное прерывание (генерируется внешними устройствами)

Они поступают в микропроцессор через микросхему 8259А программным контроллером прерывания. Для обработки одновременно возникших прерываний используются встроенные системы приоритета. Предпочтение отдается обработке внутренних прерываний, такое как деление на ноль, произведение Ø самое высокое, FF самое низкое.

При возникновении любого прерывания процессор заносит содержимое стека в регистр состояния, сбрасывает флаг произведения и заносит в содержимое регистры CS и SP. Затем путем считывания с линии данных номера прерывания и умножения его на 4, выбирается новый адрес, который является новым содержимым регистров CS и SP.

Внешним устройствам приписываются вполне определенные линии прерывания, связанные с микросхемой 8259А. Данные линии называются IRQ. Когда устройство требует обслуживания со стороны системы, от устройства к контроллеру 8259 подается сигнал. По линии IRQ устанавливается большой сигнал и подается в процессор. Процессор сбрасывает флаг прерывания и сохраняет CS и SP. После получения по …… произведения сбрасывает флаг, записывает CS и SP и по линии подает сигнал, подтверждающий обработку прерывания.

Микросхема 8259 функционально состоит и трех частей:

1. регистр, требующий обработку прерываний (IRR); используется для того, чтобы заполнить возникшие прерывания (их может быть несколько) (8 прерываний)

2. регистр ISR обслуживает прерывания, указывает на то, какое прерывание обслуживает система в данный момент

3. регистр маскирования прерывания IMR (доступен как для чтения, так и для записи)

Каждому виду регистра IMR соответствует линия прерывания IRQ. С помощью данного регистра можно запросить или разрешить данное прерывание. Установка бита в регистр IMR приводит к маскированию соответствующий линии обработки и обработка прерывания не происходит.

Наивысший приоритет у IRQ0, наименьший – у IRQ7.

В микропроцессоре 80286 стало 16 линий путем добавления второй микросхемы 8259.

Каскадный эффект достигается при подключении к линии 2 второго устройства:

RQ0 – прерывание 8 – таймер

RQ1 – прерывание 9 – клавиатура

RQ2 – вектор 0А – запрос от подчиняющегося устройства

RQ8 – прерывание 70 – обслуживание часов реально времени

RQ9 – прерывание 71 – программное предназначение

RQ10, 11, 12 – порты последовательно 72, 73, 74 резерв

RQ13 – прерывание 75 – арифметический сопроцессор

RQ14– прерывание 76 – контроллер винчестера

RQ15– прерывание 77 – резерв

RQ30В – COM1 и т.д., как было до этого

Маскированные прерывания могут быть запрещены, внутренние и немаскированные – нет.

Любая программа, которая изменяет некоторые векторы прерывания перед тем, как осуществить возврат в MS-DOS, должна переустановить первые значения этого вектора. Для того, чтобы изменить вектор прерывания, используют функции:

· 35h – получить вектор прерывания (прерывание

· 25h – установить вектор прерывания 21h)

Вызов 35h получает содержимое CS и SP. Вызов 25h в качестве параметров передается адрес обработчика.

Каждый вектор имеет свой номер (0- 255).

mov al,00h ;читает символ, введенный

int 16h ;с клавиатуры

Обработка прерывания может происходить в соответствии с тремя основными схемами.

1. Сначала вызывается системный обработчик, затем добавленный. Данный способ используется для дополнения системной обработкой какой- либо функции.

Последовательность:

Pushf – в стек заносим флаги

Call SYS – системная обработка

USER – переход в нашу программу

Iret – завершение (возврат из прерывания)

Сначала выполняется пользовательская обработка, затем системная.

2. USER – пользовательская обработка, сохранение SP и CS.

JMP SYS

3. MSER

mov ah, 20h

out 20h, al

iret



<== предыдущая лекция | следующая лекция ==>
Операционная система MS-DOS | Лекция №8


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.365 сек.