Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АСВТ.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
105.52 Кб
Скачать

Контроллер прерываний.

Контроллер прерываний – это устройство, которое получает запросы на аппаратные прерывания от всех внешних устройств. Он определяет, какие запросы следует обслужить, какие должны ждать очереди, а какие не будут обслуживаться вообще. Существует 2 контроллера прерываний – ведущий, ведомый. Самые полезные для программ аппаратные прерывания – это прерывания системного таймера и клавиатуры, т.к. стандартные обработчики этих прерываний выполняют множество функций, от которых зависит работа системы

Прерывания в защищенном режиме.

В реальном режиме адрес обработчика прерывания считывается процессором из таблицы, находящейся по адресу 0 в памяти. В защищенном режиме эта таблица, называемая таблицей дескрипторов прерываний, может находиться где угодно. Достаточно того, чтобы ее адрес и размер были загружены в регистр IDTR. Содержимое таблицы дескриптора прерываний (IDT) включает в себя дескрипторы 3ех типов, которые называются следующим образом: шлюз прерывания, шлюз ловушки и шлюз задачи. Рассмотрим прерывания в том виде, в котором они определены для защищенного режима.

INT 00 – деление на 0.

INT 01 – отладочное прерывание.

INT 02 – немаскируемое прерывание.

INT 03 – точка останова.

INT 04 – переполнение.

INT 05 – ошибка выхода операнда за допустимые границы.

INT 06 – недопустимая операция

INT 0Bh – ошибка, сегмент недоступен

INT 0Ch – ошибка стека

INT 0Dh – исключение-общая ошибка защиты

INT 0Eh – ошибка страничной адресации

INT 20h-FFh – выделенные для использования программой. Обычно для отладочных целей многие программы работающие с защищенным режимом устанавливают обработчики всех исключений, которые выдают список регистров процессора и их содержимое, а иногда и участок кода, вызвавший исключение.

Программирование на уровне портов ввода-вывода.

Т.к. они не приспособлены к ситуации, когда сразу одно за другим происходит несколько событий, вызывающих обработчик, поэтому есть смысл рассмотреть работу с устройствами ввода-вывода через порты, так как это делают сами системные функции. При этом будем иметь в виду, что связь с аппаратными средствами компьютера осуществляется главным образом через адресное пространство ввода-вывода. Это означает, что за каждым устройством закрепляется один, или чаще несколько портов и программирование устройства осуществляется исключительно с помощью команд int и out или ints и outs если устройство поддерживает потоковый ввод и вывод

Маскирование и размаскирование.

1

0

1(тип. 0)

0(тип. 1)

1

1

0

0

Рассмотрим, например, процедуры маскирования и размаскирования аппаратных прерываний. В составе компьютера имеется 2 контроллера прерываний. В каждом из них есть регистр маски

Таймер

клавиатура

последовательный порт com1

гибкий диск

параллельный порт hPT1

значение 0 разрешает прохождение сигнала прерывания, значение 1 запрещает. Пройдя через маску и через последующие узлы контроллера прерываний, сигнал поступает на код микропроцессора. Исходное значение маски устанавливается программами начальной загрузки компьютера в зависимости от конфигурации. Типичным значением является значение, показанное на рисунке. При этом значении маски размаскированными оказываются системный таймер, клавиатура, мышь, подключенная к порту COM1, гибкий диск, а также выход ведомого контроллера. Замаскированы оба параллельных порта и второй последовательный порт, к которому ничего не подключено. В ряде случаев возникает необходимость замаскировать прерывание от системного таймера, который является единственным постоянным активным источником прерывания. Для запрета прерываний таймера необходимо выполнить следующую последовательность команд:

  1. IN AL, 21h – считываем регистр маски

  2. Or Al, 1 устанавливаем бит 0 в значение 1

  3. Out 21h, al запись нового значения маски

Рассмотрим наиболее часто используемые порты:

  1. Клавиатура – контроллеру клавиатуры соответствуют порты с номерами от 60h до 6Fh

  2. Последовательные порты – каждый последовательный порт обменивается данными с процессором через набор портов ввода-вывода. Младший порт в каждом наборе является портом обмена данных, остальные используются для управления. Каждый из них также обменивается данными с процессором также через набор ввода вывода

  3. Таймер – вызывает прерывания примерно 18,2 раза в секунду, может быть запрограммирован для работы в 1 из 6 режимов.

  4. Динамик – канал 2 системного таймера управляет динамиком компьютера. При программировании динамика начальное значение счетчика таймера называют делителем частоты. Динамик работает с частотой 1193180/D Гц. Динамик можно включить и выключить путем с помощью порта 61h.

  5. Часы реального времени

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]