• скачать файл

Исследование программно управляемого обмена по готовности внешнего

с. 1





Лабораторная работа №3.

Исследование программно управляемого обмена по готовности внешнего устройства
Цель работы: изучение принципов программно управляемого обмена по готовности внешних устройств на примере работы с контроллером клавиатуры и контроллером прерываний.
1. Краткие теоретические положения

1.1. Состав рассматриваемой системы

В ходе лабораторной работы рассматривается система совместимая по архитектуре с системой Intel 8086. В ее состав входит центральный процессор, обеспечивающий выполнение программ. Центральный процессор имеет внешнюю шину к которой подключаются все периферийные устройства – контроллеры ввода-вывода, память, шинные контроллеры и т.д. Контроллер клавиатуры совместимый с Intel 8042, обеспечивающий обмен данными с устройством ввода “клавиатура” и их буферизацию. Контроллер прерываний, совместимый с контроллером Intel 8259.

Контроллер клавиатуры и контроллер прерываний располагаются в сокращенном адресном пространстве ввода-вывода периферийных устройств, что позволяет обращаться к ним с использованием команд работы портами ввода-вывода IN/OUT.
2.2. Режимы обмена с периферийными устройствами
Наиболее распространенными режимами обмена данными с периферийными устройствами являются:


  • Программный обмен по готовности (сканирование)

  • Обмен по прерываниям

  • Обмен с использованием DMA (Direct Memory Access) канала

В большинстве периферийных устройств существует три типа регистров: контрольные, для управления режимами работы; статусные – для определения состояния устройства и данных, для непосредственного обмена данными. Программно управляемый обмен состоит в опросе статусных регистров периферийного устройства и выявления состояния готовности к обмену данными. Чаще всего опрос осуществляется непосредственно в основном цикле программы постоянно или в соответствии с временной диаграммой, когда опрос происходит через фиксированные промежутки времени. При обнаружении сигнала готовности программа выполняет обмен данными через регистры данных. Этот способ является наиболее простым, поскольку позволяет иметь линейное построение программного обеспечения и отсутствие параллельных процессов. Но это также является и недостатком этого метода, поскольку затрудняется поддержка нескольких периферийных устройств критичных по времени реакции программной системы, и необходимость иметь поддержку данного вида устройств непосредственно в программе.

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

Обмен данными посредством канала прямого доступа к памяти (DMA) подразумевает что устройство передает данные непосредственно в предопределенную область памяти самостоятельно без прямого участия программного обеспечения (кроме настройки этого канала), а затем сообщает процессору об окончании обмена посредством прерывания или специального бита в статусном регистре контроллера прерывания. Обычно этот режим используется для устройств, которые имеют специализированную поддержку этого режима и его необходимость состоит в существенном отличие скоростей работы процессора и устройства, а также позволяет несколько разгрузить программное обеспечение.


2.3. Реализация программного обмена между центральным процессором и контроллером клавиатуры посредством контроллера прерываний
В данной лабораторной работе рассматривается следующая схема работы. Контроллер клавиатуры принимает скан-код нажатой клавиши и помещает его во внутренний буфер. Обычный скан-код представляет собой байтовое значение, младшие семь битов которого описывают код клавиши (0..127), а старший бит нажатие(0)/отпускание(1). Буфер клавиатуры доступен для чтения через порт 60h сокращенного пространства ввода-вывода. Контроллер клавиатуры также имеет и статусный и контрольный регистр, но в данной лабораторной работе предполагаем, что он настроен BIOSом на режим обмена по прерываниям и его перепрограммирование производиться не будет.

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

Контроллер прерываний состоит из двух одинаковых микросхем, включенных каскадно. Каждая микросхема обеспечивает поддержку до восьми источников. В данной лабораторной работе будет использована только входная часть контроллера прерываний которая состоит из регистра IRR (Interrupt Request Register) и IMR (Interrupt Mask Register). Регистр IRR предназначен для запоминания запросов на прерывания от устройств и будет хранить соответствующий запрос. Регистр IMR предназначен для блокирования прохождения запросов на прерывания от соответствующих устройств. Единичное значение соответствующего бита в регистре IMR блокирует прохождение прерывания на дальнейшую обработку по этой линии. Регистр IMR доступен через порт 21h для чтения и записи напрямую. Регистр IRR доступен только для чтения через порт 20h, но этот порт используется для обращения к нескольким регистрам контроллера прерываний, поэтому предварительно в этот порт должна быть отправлена команда на чтение регистра IRR, которая представляет собой код 0Ah.

Для обеспечения режима программного обмена, разрабатываемая программа должна обеспечить блокирование прохождения прерывания от клавиатуры через регистр IMR. Затем в цикле должен анализироваться регистр IRR на предмет появления запроса от клавиатуры. После появления запроса необходимо выбрать очередной символ из буфера клавиатуры и приступать к его анализу и обработке.



Задание на выполнение лабораторной работы





  1. Написать программу («com» файл), последовательно выполняющую:

  2. Очистку экрана.

  3. Чтение и вывод на экран содержимого регистра маски прерываний (адрес 21h) в двоичном или шестнадцатеричном формате.

  4. Запрет аппаратных прерываний от клавиатуры.

  5. Чтение готовности клавиатуры по изменению соответствующего бита в регистре запросов прерывания (IRR).

  6. По готовности клавиатуры, если нажата клавиша “Esc” восстановить прерывания от клавиатуры и выйти из программы.

  7. Дополнительно рассмотреть вариант с проверкой готовности клавиатуры по опросу регистра состояния контроллера клавиатуры.

Рекомендации:



  1. Данная программа может правильно работать только под управлением операционной системы MS DOS.

  2. Для контроля работы программы в циклах опроса готовности и для функций задержки на время обмена с контроллером прерываний использовать вывод фиксированных символов на экран с переводом строки в конце каждой строки.

Литература:



В. Юров Ассемблер/учебник для вузов -:СПб, Питер
с. 1