Как записать аппаратные прерывания в стиле PDP11 с приоритетом в 8086? - PullRequest
0 голосов
/ 11 мая 2018

Прошу прощения, если этот вопрос звучит немного лениво. Я недавно закончил курс PDP11, и меня попросили помочь школьнику, которая испытывает проблемы с ее проектом TASM 8086, в очень короткие сроки.

Я хотел бы реализовать простую программу в 8086:

  1. Подпрограмма, которая запускается с приоритетом по умолчанию.
  2. Процедура аппаратного прерывания клавиатуры, которая работает с приоритетом, превышающим значение по умолчанию.
  3. Аппаратная подпрограмма прерывания часов, которая работает с приоритетом, превышающим подпрограмму прерывания клавиатуры.

Если можете, приведите пример простого рабочего кода. Большое спасибо заранее.

1 Ответ

0 голосов
/ 12 мая 2018

8086 обеспечивает программную поддержку до 256 различных IRQ, пронумерованных от 0x00 до 0xff.Для каждого IRQ в таблице векторов прерываний указан отдельный обработчик .Это не означает, что процессор 8086 имеет 256 линий физического прерывания.

В типичной установке 8086 один или два программируемых контроллера прерываний 8259 (PIC) используются для управления 8 или15 линий прерывания.Каждый PIC имеет 8 линий прерывания, одна линия первого PIC используется для подключения второго PIC в настройке master / slave.Когда устройство отправляет прерывание, PIC вызывает IRQ в CPU с соответствующим номером IRQ, и ваш обработчик прерываний выполняется.Прочтите связанную статью для получения подробной информации о том, как работать с 8259.

Типичные системы 8086 (включая IBM PC и совместимые) спроектированы таким образом, чтобы каждое устройство имело свою собственную линию IRQ.Нет цепочки IRQ, как на PDP-11, и нет приоритетов IRQ.Всем интересующим вас устройствам назначены фиксированные линии прерываний, см. Здесь для получения подробной информации.Обратите внимание, что номера IRQ на этой диаграмме - это 8259 номеров IRQ, а не 8086 номеров IRQ.Фактический IRQ 8086, который повышается, зависит от того, как вы конфигурируете PIC 8259.

...