Архитектура микропроцессорной системы. Состав машинных команд и основы программирования микропроцессорной системы на ассемблере. Булатов В.Н. - 80 стр.

UptoLike

Составители: 

Рассмотрим пример инициализации ПКП.
Пример 4 Известно, что адреса ПКП в микропроцессорной системе
0020 (АО=0) и 0021 (АО=1). Необходимо проинициализировать ПКП в
соответствии с заданными векторами прерываний от устройств,
приведенных в таблице 15, считая, что каскадирование ПКП отсутствует.
Запрос по переднему фронту IRQ
.
i
Таблица 15
IRQ
(двоич.)
Устройство, вызывающее
прерывание
N IRQ Вектор
i
IRQ 0 000 0008
IRQ 1 001 0009 Клавиатура
IRQ 2 010 000А Канал ввода-вывода
IRQ 3 011 000B Последовательный порт СОМ 1
IRQ 4 100 000C Последовательный порт СОМ 2
Таймер (F = 18,206507 Гц)
Ответ
1) Составляем OCW 1 в соответствии с назначением бит этой
команды (запуск IRQ фронтом; произвольные состояния - «0»):
0 0 0 1 0 0 0
1
1 1
2) ICW 2 равен вектору 08.
3) ICW 3 не нужен, так как только один ПКП.
4) ICW 4 составляем из условия обычного (не автоматического)
завершения прерывания для процессора типа 8086:
0 0 0 0 1 1 0
1
O D
Составляем фрагмент программы инициализации:
MOV DX,0020 ; Адрес ПКП в DX (при AO = 0);
MOV AL,11 ; ICW 1 в AL и оттуда
OUT DX,AL ; в ПКП (при АО = 0);
INC DX ; приготовить адрес 21 (при АО = 1);
MOV AL,08 ; ICW 2 в AL и оттуда
OUT DX,AL ; в ПКП (при АО = 1).
MOV AL,0D ; ICW 4 в AL и оттуда
OUT DX,AL ; в ПКП (при АО = 1).
Вычислим адрес начального вектора (адреса отстоят друг от друга с
шагом в 4 адреса). Это будет прерывание таймера. Вычисляем адрес
вектора:
80
      Рассмотрим пример инициализации ПКП.
      Пример 4 —Известно, что адреса ПКП в микропроцессорной системе
0020 (АО=0) и 0021 (АО=1). Необходимо проинициализировать ПКП в
соответствии с заданными векторами прерываний от устройств,
приведенных в таблице 15, считая, что каскадирование ПКП отсутствует.
Запрос по переднему фронту IRQi.

      Таблица 15
                                            Устройство, вызывающее
     IRQi (двоич.)   N IRQ       Вектор
                                                  прерывание
        IRQ 0         000        0008       Таймер (F = 18,206507 Гц)
        IRQ 1         001        0009             Клавиатура
        IRQ 2         010        000А         Канал ввода-вывода
        IRQ 3         011        000B     Последовательный порт СОМ 1
        IRQ 4         100        000C     Последовательный порт СОМ 2

     Ответ
     1) Составляем OCW 1 в соответствии с назначением бит этой
команды (запуск IRQ фронтом; произвольные состояния - «0»):
                         0 0 0 1 0 0 0
                                    1
                   1    1
     2) ICW 2 равен вектору 08.
     3) ICW 3 не нужен, так как только один ПКП.
     4) ICW 4 составляем из условия обычного (не автоматического)
завершения прерывания для процессора типа 8086:

                             0    0   0   0   1   1   0
                                          1
                      O       D
       Составляем фрагмент программы инициализации:
       MOV DX,0020 ; Адрес ПКП в DX (при AO = 0);
       MOV AL,11 ; ICW 1 в AL и оттуда
       OUT DX,AL ; в ПКП (при АО = 0);
       INC DX      ; приготовить адрес 21 (при АО = 1);
       MOV AL,08 ; ICW 2 в AL и оттуда
       OUT DX,AL      ; в ПКП (при АО = 1).
       MOV AL,0D       ; ICW 4 в AL и    оттуда
       OUT DX,AL       ; в ПКП (при АО = 1).

            Вычислим адрес начального вектора (адреса отстоят друг от друга с
       шагом в 4 адреса). Это будет прерывание таймера. Вычисляем адрес
       вектора:

80