
- •Процессор Intel в реальном режиме.
- •Регистры процессора.
- •Сегментные регистры.
- •Регистр флагов.
- •Способы адресации.
- •Архитектура компьютера.
- •Основные блоки процессора.
- •Организация памяти в микропроцессоре.
- •Страничная адресация. Адресация в защищенном режиме.
- •Механизм защиты.
- •Прерывания и исключения.
- •Обработчики прерываний и прерывания от внешних устройств.
- •Контроллер прерываний.
- •Прерывания в защищенном режиме.
- •Программирование на уровне портов ввода-вывода.
- •Маскирование и размаскирование.
- •Получение доступа к портам в Windows 2000/xp
- •Оперативная память.
- •Устройство и принципы функционирования озу
- •Типы микросхем памяти.
Контроллер прерываний.
Контроллер прерываний – это устройство, которое получает запросы на аппаратные прерывания от всех внешних устройств. Он определяет, какие запросы следует обслужить, какие должны ждать очереди, а какие не будут обслуживаться вообще. Существует 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
Таймер
клавиатура
последовательный порт com1
гибкий диск
параллельный порт hPT1
значение 0 разрешает прохождение сигнала прерывания, значение 1 запрещает. Пройдя через маску и через последующие узлы контроллера прерываний, сигнал поступает на код микропроцессора. Исходное значение маски устанавливается программами начальной загрузки компьютера в зависимости от конфигурации. Типичным значением является значение, показанное на рисунке. При этом значении маски размаскированными оказываются системный таймер, клавиатура, мышь, подключенная к порту COM1, гибкий диск, а также выход ведомого контроллера. Замаскированы оба параллельных порта и второй последовательный порт, к которому ничего не подключено. В ряде случаев возникает необходимость замаскировать прерывание от системного таймера, который является единственным постоянным активным источником прерывания. Для запрета прерываний таймера необходимо выполнить следующую последовательность команд:
IN AL, 21h – считываем регистр маски
Or Al, 1 устанавливаем бит 0 в значение 1
Out 21h, al запись нового значения маски
Рассмотрим наиболее часто используемые порты:
Клавиатура – контроллеру клавиатуры соответствуют порты с номерами от 60h до 6Fh
Последовательные порты – каждый последовательный порт обменивается данными с процессором через набор портов ввода-вывода. Младший порт в каждом наборе является портом обмена данных, остальные используются для управления. Каждый из них также обменивается данными с процессором также через набор ввода вывода
Таймер – вызывает прерывания примерно 18,2 раза в секунду, может быть запрограммирован для работы в 1 из 6 режимов.
Динамик – канал 2 системного таймера управляет динамиком компьютера. При программировании динамика начальное значение счетчика таймера называют делителем частоты. Динамик работает с частотой 1193180/D Гц. Динамик можно включить и выключить путем с помощью порта 61h.
Часы реального времени