Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Практическая работа №3. Программирование внешних устройств. Подсистема прерываний




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

Перечень необходимых технических средств обучения:

ü персональные компьютеры Core i3 3.0, 2 Gb, 4 ГБ ОЗУ, 250 Gb HDD;

ü локальная сеть;

ü коммутатор для подключения в сети Internet.

Перечень необходимых программных средств обучения:

ü ОС Windows XP (7);

ü Программа «Учебная ЭВМ».

1. Цель занятия: изучение способов способами взаимодействия процессора и внешних устройств в составе ЭВМ, научиться подключать внешние устройства в составе учебной ЭВМ и составлять программы для вывода информации с клавиатуры на дисплей учебной ЭВМ.

2. Основные теоретические положения:

2.1 Связь процессора и ВУ может осуществляться в синхронном и асинхронном режиме.

Синхронный режим используется для ВУ, всегда готовых к обмену. В нашей модели такими устройствами являются дисплей и тоногенератор – процессор может обращаться к этим ВУ, не анализируя их состояние (правда дисплей блокирует приём данных после ввода 128 символов, формируя флаг ошибки).

Асинхронный обмен предполагает анализ процессором состояния ВУ, которое определяет готовность ВУ выдать или принять данные или факт осуществления какого-нибудь события, контролируемого системой. К таким устройством в модели является клавиатура и блок таймеров.

2.2 Анализ состояния ВУ может осуществляться процессором двумя способами:

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

- в режиме прерывания (при возникновении контролируемого события ВУ формирует процессору запрос на прерывание программы, по которому процессор и осуществляет связь в ВУ)

2.3 В состав контроллера клавиатуры входят три программно-доступных регистра:

  • DR (адрес 0) — регистр данных;
  • CR (адрес 1) — регистр управления, определяет режимы работы контроллера и содержит следующие флаги (устанавливаются и сбрасываются программно):
    • Е — флаг разрешения приема кодов в буфер, при Е = 0 контроллер игнорирует нажатие на клавиатуре, прием кодов в буфер не производится. На считывание кодов из буфера флаг Е влияния не оказывает;
    • I — флаг разрешения прерывания, разрешает формирование запроса на прерывание от клавиатуры в момент установки флага готовности Rdy
    • S — флаг режима посимвольного ввода. При S = 0 флаг готовности Rdy формируется только после нажатия кнопки Завершить ввод в окне обозревателя клавиатуры, при S = 1 – после каждого нажатия клавиши;
  • SR (адрес 2) — регистр состояния, содержит два флага, устанавливаемые контроллером «аппаратно»:
    • Err — флаг ошибки устанавливается при вводе в буфер 50-го символа, сбрасывается программно;
    • Rdy — флаг готовности, устанавливается в зависимости от значения флага S, сбрасывается «аппаратно» после выполнения команды ввода из регистра DR – считывание символа из буфера.

2.4 Дисплей представляет собой модель внешнего устройства, реализующую функции символьного дисплея. Дисплей может отображать символы, задаваемые ASCII-кодами, поступающими на его регистр данных.

Дисплей включает:

  • видеопамять объемом 128 слов (ОЗУ дисплея);
  • символьный экран размером 8 строк по 16 символов в строке;
  • четыре программно-доступных регистра:
    • DR (адрес 0) — регистр данных;
    • CR (адрес 1) — регистр управления содержит следующие флаги (устанавливаются и сбрасываются программно):
      • Е – флаг разрешения работы дисплея; при Е = 0 запись в регистры AR и DR блокируется;
      • А – флаг автоинкремента адреса; при А = 1 содержимое AR автоматически увеличивается на 1 после любого обращения к регистру DR – по записи или чтению.
    • SR (адрес 2) – регистр состояния содержит единственный флаг Err – ошибки устанавливается аппаратно при попытке записать в регистр адреса число, большее 127, сбрасывается программно;
    • AR (адрес 3) – регистр адреса.

 

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

Среди подключаемых ВУ формировать запросы на прерывания могут контроллер клавиатуры и блок таймеров, которым по умолчанию присваиваются вектора прерываний 0 и 2 соответственно. При этом вектор блока таймеров является общим для всех трёх таймеров, при необходимости обработчик прерывания может определить, какой из них вызвал прерывание по значению разрядов регистра SR состояния блока таймеров.

Таблица векторов прерываний располагается в ячейках ОЗУ 100 – 109, таким образом возможно обслуживать до 10 различных векторных источников прерываний. В ячейках таблицы должны располагаться адреса соответствующих программ – обработчиков прерываний. Эти адреса становятся известными после компиляции и заносятся в ячейки «вручную».

При вызове обработчика в стеке сохраняется адрес возврата (текущее значение РС) и значение регистр флагов IF, OV, S, Z. Возврат из обработчика прерывания осуществляется командой IRET, которая восстанавливает значения РС и регистра флагов.

Дисциплина обслуживания прерываний поддерживается с помощью программно-доступных флагов. Флаг IF разрешает/запрещает все прерывания, он устанавливается в «1» командой EI (Разрешить прерывания) и сбрасывается в «0» командой DI (Запретить прерывания). После RESET процессора IF = 0, поэтому, если предполагается использовать прерывания, следует выполнить команду EI. При вызове любого обработчика IF аппаратно сбрасывается, поэтому если требуется реагировать на другие запросы внутри обработчика прерывания, в его начале следует выполнить команду EI. Команда IRET восстанавливает все флаги, в том числе IF = 1.

В системе команд модели имеются команды INT0 – INT9, которые позволяют программно вызывать обработчики прерываний независимо от значения IF.

На ВУ предусмотрены т.н. «локальные маски», позволяющие запретить/разрешить прерывание от любого источника независимо от остальных.

Пример программы, выставляющей в начало каждой строки её номер приведён в таблице 1:

Таблица 1 Пример программы, выставляющей в начало каждой строки её номер

 

Метка Команда Примечание
  RD #10 ; включаем
  OUT 11 ; дисплей;
  RD #0 ; задаём начальный
  WR R1 ; адрес вывода;
  RD #49 ; вводим код
  WR R2 ; цифры «1»;
  RD #8 ; вводим число
  WR R3 ; повторений цикла;
     
     
M1: RD R1 ; читаем текущий адрес
  OUT 13 ; и передаём в регистр адреса дисплея;
  ADD #16 ; увеличиваем адрес на 16 – на начало следующей строки;
  WR R1 ; сохраняем изменённый адрес;
  RD R2 ; читаем код цифры – номер строки;
  OUT 10 ; передаём код цифры на дисплей;
  RD @R2+ ; увеличиваем содержимое R2 (код цифры) на единицу;
  JRNZ R3,M1 ; декремент R3 и переход на начало цикла, если R3 ≠ 0;
  HLT  

 

Пример программы, выводящей слово «Май» приведён в таблице 40 Пример программы, выводящей слово «Май»

 

Таблица 2 Пример программы, выводящей слово «Май»

 

Метка Команда Примечание
  RD #11 ; включаем дисплей и устанавливаем
  OUT 11 ; флаг автоинкремента;
  RD #0 ; задаём начальный адрес
  OUT 13 ; выводимого слова;
  RD #204 ; ввод кода буквы «М»
  OUT 10 ; вывод на дисплей
  RD #224 ; ввод кода буквы «а»
  OUT 10 ; вывод на дисплей
  RD #233 ; ввод кода буквы «й»
  OUT 10 ; вывод на дисплей
  HLT  

 

Программа для обработки прерывания от клавиатуры – программу для обработки прерывания пустого цикла при вводе символа с клавиатуры и передаче этого символа на дисплей.

Таблица 3. Обработка прерывания от клавиатуры.

Метка Команда Описание
  RD #11 ; число 11 – в аккумулятор;
  OUT 1 ; включить клавиатуру и разрешить прерывание от неё;
  OUT 11 ; включить дисплей в режиме автоинкремента адреса;
  RD #103 ; передаём в контроллер код команды
  OUT 1 ; Установить S в «1» (режим посимвольного ввода);
  EI ; установить FI в «1» (разрешить прерывания);
M1: NOP ; пустой
  JMP M1 ; цикл;
  IN 0 ; считывание введённого символа из буфера в аккумулятор;
  OUT 10 ; передача ASCII-кода на символьный дисплей
  IRET ; возврат из прерывания.

Адрес обработчика прерывания от клавиатуры (значение метки ОбрПр) необходимо записать в ячейку 100, так как вектор клавиатуры по умолчанию равен 0. Если компилировать приведённую программу с нулевого адреса подряд, то адрес команды IN 0 (начало обработчика) равен 8. Поэтому число 8 следует перед запуском программы записать в ячейку 100.

Для установки флага E в регистре CR требуется выполнить команды:

RD #10

OUT 1

Для установки S в «1» (режим посимвольного ввода) требуется выполнить следующие команды:

RD #103

OUT 1

Таблица4. Вывод введённых символов с клавиатуры на дисплей по опросу устройства:

Метка Команда
  RD #10
  OUT 1
  OUT 11
  RD #103
  OUT 1
M1: IN 2
  JZ M1
  IN 0
  OUT 10
  JMP M1

Задание к работе






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных