Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР1_метод_корр_2011.doc
Скачиваний:
13
Добавлен:
02.04.2015
Размер:
1.85 Mб
Скачать

Управление прерываниями в микропроцессоре.

Прерывание вызывается появлением на входе INT МП активного сигнала. Он приходит асинхронно по отношению к команде, т.е. в этот момент процессор может выполнять команду и в конце выполнения команды процессор опрашивает входной сигнал INT и если выполняется условие: INT * INTЕ = 1, то процессор завершает выполнение текущей команды и переходит в особый цикл М1 во время которого он принимает команду вызова подпрограммы обслуживания прерываний.

Цикл М1 называется особым т.к. 1) Источником команды вызова является внешнее устройство, а не память, как в обычном цикле М1. 2) При приеме каждого байта команды вызова подпрограммы обслуживания прерывания программный счетчик не инкрементирует своего содержимого.

Рассмотрим пример.

0806 32

0807 20 STA 0920h

0808 09

0809 47

Пусть во время выполнения указанной выше команды STA 0920h (назовем ее текущей) на вход INT МП пришел сигнал запроса прерывания, т.е. INT=1. МП завершает выполнение текущей команды, после чего входит в особый цикл М1, во время которого принимает команду вызова подпрограммы обслуживания прерывания (пусть INT * INTЕ = 1). На момент входа в цикл М1 программный счетчик содержит адрес следующей команды 0809h. В данном случае это адрес (АТВ, см. описание команды CALL) команды, которой должно быть передано управление после обработки прерывания. При приеме каждого байта команды вызова изменение содержимого программного счетчика блокируется, т.к. в противном случае после обработки прерывания управление будет передано совсем другой команде (как будет показано ниже, команде с адресом либо 080Ah (способ А), либо 080Dh (способ Б)).

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

Есть два способа формирования начального адреса подпрограммы обслуживания прерывания:

А) Внешнее устройство, имеющее номер nnn, формирует код команды RST N (где N=nnn), т.е. ВУ само формирует код вызова подпрограммы. Формат команды RST N: 11nnn111 .

Это осуществляется с помощью включения в состав ВУ регистра. Пример такого регистра для N=5 приведен на рис. 3.

Пусть N=5, тогда код вызова подпрограммы RST N: 11101111. Этот код формируется в регистре и по сигналу INTA от МП поступает по ШД в МП. На основании этого кода формируется начальный адрес подпрограммы обслуживания прерываний от ВУ № 5.

В начальной области адресного пространства имеется 8 зон, по 8 байтов в каждой зоне. Каждая зона соответствует ВУ с определенным номером. Каждая зона содержит либо всю подпрограмму обслуживания прерывания (если она содержит не больше 8-ми байтов) или команду JMP ADDR (она занимает 3 байта) ADDR – символическое имя начального адреса подпрограммы обслуживания прерывания.

РС = 00101000 так РС указывает на начальный адрес зоны, соответствующей ВУ № 5.

0…7 – «0»; 8…0F «1»; 10…17 «2»; 18…1F «3»; 20…27 «4»; 28…2F «5».

Рис. 3 Регистр ВУ

Б) Предполагает использование контроллера прерываний.

Он определяет ВУ с максимальным приоритетом (из всех ВУ, запросивших прерывание) и формирует команду CALL AD_мах – вызов подпрограммы, где AD_мах – начальный адрес подпрограммы обслуживания прерывания от источника с максимальным приоритетом.

Напомним, что в особом цикле М1 процессор принимает три байта этой команды, стробируя прием каждого байта сигналом INTA. В течение трех м.ц. байт состояния будет равен 23 Н.

ОФОРМЛЕНИЕ ОТЧЕТА

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

A=80 F=43 В=08 С=33 D=08 E=32 H=08 L=20 SP=08DO PC=0806

Так как PC= 0806, то программа размещается в области ОЗУ с адреса 0806.

Kpoмeсостояния регистров перед началом работы программы задается состояние следующих ячеек ОЗУ:

(0820)=38 (0821)=00 (08D0)=30 (08Dl)=40

Отчет по лабораторной работе должен содержать следующие разделы:

  1. Формулировка задания. Здесь необходимо записать фрагмент программы на языке ассемблера МП К580 в том виде, в котором он представлен в задании.

  2. Фрагмент программы после дизассемблирования, т. е. машинный код фрагмента.

С этой целью необходимо, пользуясь табл.2, определить 16-ричные коды заданной пpoгpaммы и ее размещение в памяти. Так, для приведенной ниже в качестве примера программы такая кодировка имеет вид:

  1. Таблица, в которой необходимо представить процесс изменения содержимого регистров и ячеек памяти, задействованных во фрагменте, при выполнении команд фрагмента. Таблица должна быть выполнена в следующем формате:

Регистры

(Ячейки памяти)

Исходное

состояние

После выполнения команд

SUB M

ANI 0F0H

STAX B

CNZ 38H

PC

0806

0807

0809

080А

0038

A

80

48

40

F

43

06

02

H

08

L

20

B

08

C

33

(0820)

38

(0833)

Х

40

(08CF)

X

08

(08CE)

X

0D

SP

08D0

08СЕ