На главную
Подписка
Новости










Главная / MS-DOS / MS-DOS. РУКОВОДСТВО РАЗРАБОТЧИКА / Глава 5 / Передача данных методом прерываний данных Сделать домашней страницей Добавить в избранное Написать писмо

НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Передача данных методом прерываний данных

Передача данных методом прерываний данных используется, когда передача данных ведется асинхронно (то есть, время, отведенное для передачи данных заранее не определяется). И такая передача данных обычно происходит сравнительно не часто. Прерывание указывает на появление какого-либо внешнего события в процессоре, тре- бование может вызываться каким-либо внешним по отношению к процессору устройством, часами (таймером) или какой-либо программой. При наступлении прерывания процессор приостанавливает выполнение текущей программы ("подвешивает" ее), считывает адрес сервисной программы прерываний (программы ISR) из таблицы векторов прерываний и выполняет последнюю.


Основными функциями, выполняемыми сервисной программой ISR, являются :


1. Разрешение прерываний таким образом, что могут обслуживаться прерывания более высоких приоритетов.


2. Сохранение регистров, которые будут использоваться программой ISR.


3. Выполнение функций обработки, связанных с прерыванием, как можно быстрее.


4. Восстановление содержимого сохраненных регистров.


5. Выполнение команды IRET для возобновления выполнения прерванной программы.


Представленная ниже программа содержит структуру программы ISR:


                  sti                       ; разрешить прерывания
                  push      ax              ; сохранить только те
                  push      bx              ; регистры, которые ис-
                  push      cx              ; пользуются программой
                  push      dx              ; ISR
                  .
                  .
                  .
                  mov       ax,cs           ; локальные данные, к ко-
                                            ; торым будет вестись об-
                                            ; ращение
                  mov       ds,ax           ; с использованием области
                                            ; DS
                  .
                  .
                  .                         ; обработать прерывания

                  pop       dx              ; восстановить регистры в
                  pop       cx              ; обратном порядке
                  pop       bx              ;
                  pop       ax              ;
                  iret                      ; возобновить выполнение
                                            ; прерванной программы

При появлении прерывания процессор сохраняет три слова (CS, IP, флаги) и считывает два слова (адрес программы ISR). Таким образом, на обслуживание любого прерывания в процессоре 8088 затрачивается 71 цикл, а в процессоре 8086 - 51 цикл. Не требуется дополнительных затрат на задание прерывания и его сброс, потому что процесс обслуживания прерывания уже сбрасывает его (это называется "автоматическое завершение режима прерывания").


НАЗАД СОДЕРЖАНИЕ ВПЕРЁД

Hosted by uCoz