Assembler для начинающих


         

Оставшиеся две части примера посылают


                       ??
                                ]
 
 
              00C9                        CODE ENDS
                                           END  SET_INTERRUPT
 
            Фиг. 8.17 Асинхронные прерывания (окончание)
 
      Оставшиеся две части примера посылают и принимают символ. В
    регистре состояния линии по адресу ввода-вывода 3FDH есть биты
    состояния буферов передачи и приема. Посылать символ до тех пор,
    пока буфер передачи не опустеет, нельзя; и естественно, нельзя
    читать символ до того, как он принят.
 
      Адаптер асинхронной связи также работает с прерываниями. Сигнал
    OUT2 в регистре управления модемом передает сигнал прерывания от
    микросхемы ACE системе. Регистр разрешения прерываний в микросхеме
    ACE выбирает те возможные изменения состояний, которые приведут к
    возбуждению внешнего прерывания. Адаптер асинхронной связи
    возбуждает прерывание уровня 3 контроллера прерываний 8259.
 
      Давайте посмотрим, как можно использовать прерывание от
    асинхронной платы для того, чтобы принимать символы. На Фиг. 8.17
    показана последовательность событий, необходимых для включения
    системы прерываний. В случае аппаратного прерывания, программа
    устанавливает вектор прерывания, соответствующий уровню 3
    контроллера 8259 (прерывание 0BH по адресу 58H), на адрес процедуры
    обслуживания прерывания. Затем она сбрасывает бит регистра маски,
    соответствующий прерыванию от платы связи. В микросхеме ACE 8250
    программа загружает регистр разрешения прерывания так, чтобы
    разрешить прерывания по состоянию приемной линии. И наконец,
    программа включает линию OUT2, чтобы в систему поступали
    прерывания. Когда все это работает, не возникает никаких проблем о
    бработке символов по мере их получения системой. Программа на Фиг.
    8.17 помещает эти символы в буфер, где их может не торопясь
    просматривать другая программа.

Содержание  Назад  Вперед