Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПМСУ1.doc
Скачиваний:
11
Добавлен:
13.05.2015
Размер:
317.95 Кб
Скачать

Российская Федерация

Тюменская область

ХАНТЫ-МАНСИЙСКИЙ АВТОНОМНЫЙ ОКРУГ –ЮГРА

Департамент образования и науки

Сургутский государственный университет

Ханты-Мансийского автономного округа

Факультет автоматики и телекоммуникаций

Кафедра автоматики и компьютерных систем

Отчет

По лабораторной работе № 6

По дисциплине «Организация ЭВМ»

Выполнили:

Проверил: Запевалов А.В.

Сургут

Задание: Создать программное обеспечение, отображающее основную надпись и реагирующее на запросы от трёх источников прерываний. Подпрограммы обслуживания запросов осуществляют отображение на дисплее в течение 3-5 секунд определённой надписи.

Адреса КПР: Master – 98h, 99h;

Slave-9Ch,9Dh.

При активации запросов IRQ3 IRQ4 IRQ5 взводятся триггеры расположенные по адресам B1,B2.B3 – соответственно. При выходе из подпрограмм обслуживания данных триггеры необходимо сбрасывать.

При программировании ведущему сообщить о том, что к его 0-му и 7-му входу IRQ подключен ведомый. Ведомому назначить номер 7 и замаскировать все его запосы.

Основная надпись

IRQ

Надпись

IRQ

Надпись

IRQ

Надпись

HAUSE

3

CLUB

5

SPEED

1

PLEASE


Вариант 24:

Блок-схема

начало

Запись в стек слова состояния

Запись символа н в аккумулятор

Разрешение прерываний

Запись символа p в аккумулятор

Сохранение содержимого аккумулятора по адресу 0bff

Запись символа l в аккумулятор

Сохранение содержимого аккумулятора по адресу 0bfe

Запись символа e в аккумулятор

Сохранение содержимого аккумулятора по адресу 0bfd

Запись символа a в аккумулятор

Сохранение содержимого аккумулятора по адресу 0bfc

Запись символа s в аккумулятор

Сохранение содержимого аккумулятора по адресу 0bfb

Запись символа e аккумулятор

Сохранение содержимого аккумулятора по адресу 0bfa

Инициализация псевдосчетчика ВС

Задержка в 1 мс

Однократное сканирование дисплея

Декремент счетчика

Вычитаем из a регистра 0 для проверки флагов

Заносим содержимое b регистра в аккумулятор

Сброс триггера

Отправка Ведущему команды eoi

Извлечение из стека слова состояния

Выход из подпрограммы

начало

Запись в стек слова состояния

Запись символа н в аккумулятор

Разрешение прерываний

Запись символа s в аккумулятор

Сохранение содержимого аккумулятора по адресу 0bff

Запись символа p в аккумулятор

Сохранение содержимого аккумулятора по адресу 0bfe

Запись символа e в аккумулятор

Сохранение содержимого аккумулятора по адресу 0bfd

Запись символа e в аккумулятор

Сохранение содержимого аккумулятора по адресу 0bfc

Запись символа d в аккумулятор

Сохранение содержимого аккумулятора по адресу 0bfb

Запись символа “ “аккумулятор

Сохранение содержимого аккумулятора по адресу 0bfa

Инициализация псевдосчетчика ВС

Задержка в 1 мс

Однократное сканирование дисплея

Декремент счетчика

Вычитаем из a регистра 0 для проверки флагов

Заносим содержимое b регистра в аккумулятор

Сброс триггера

Отправка Ведущему команды eoi

Извлечение из стека слова состояния

Выход из подпрограммы

Листинг программы

Адрес

Метка

Код

Assembler

Комментарий

0800h

3E

MVI A, 14h

Инициализация КИ1 (00010100)

0801h

14

0802h

D3

OUT 98h

Отправка Ведущему КИ1

0803h

98

0804h

D3

OUT 9Ch

Отправка Ведомому КИ1

0805h

9C

0806h

3E

MVI A, 0Ah

Инициализация КИ2 (00001010)

0807h

0A

0808h

D3

OUT 99h

Отправка Ведущему КИ2

0809h

99

080Ah

D3

OUT 9Dh

Отправка Ведомому КИ2

080Bh

9D

080Ch

3E

MVI A, 81h

Инициализация

080Dh

81

080Eh

D3

OUT 99h

Отправка Ведущему КИ3 (10000001)

080Fh

99

0810h

3E

MVI A, 07h

Инициализация

0811h

7

0812h

D3

OUT 9Dh

Отправка Ведомому КИ3 (00000111)

0813h

9D

0814h

3E

MVI A,D5h

Инициализация (11010101) (КО1)

0815h

D5

0816h

D3

OUT 99h

Маскирование прерываний Ведущего

0817h

99

0818h

3E

MVI A, FFh

Инициализация (11111111) (КО1)

0819h

FF

081Ah

D3

OUT 9Dh

Маскирование прерываний Ведомого

081Bh

9D

081Ch

3E

MVI A, C1h

Инициализация (11000001) (КО2д)

081Dh

C1

081Eh

D3

OUT 98h

Дно приоритетов Ведущего на IRQ1

081Fh

98

0820h

D3

OUT 9Ch

Дно приоритетов Ведомого на IRQ1

0821h

9C

0822h

3E

MVI A, 00h

0823h

00

0824h

D3

OUT B1h

Сброс триггера

0825h

B1

0826h

D3

OUT B2h

Сброс триггера

0827h

B2

0828h

D3

OUT B3h

Сброс триггера

0829h

B3

082Ah

FB

EI

Разрешение прерываний

082Bh

HAUSE

3E

MVI A, 76

Запись в аккумулятор кода символа H

082Ch

76

082Dh

32

STA 0BFF

Сохранение содержимого аккумулятора по адресу 0BFF

082Eh

FF

082Fh

0B

0830h

3E

MVI A, 77

Запись в аккумулятор кода символа А

0831h

77

0832h

32

STA 0BFE

Сохранение содержимого аккумулятора по адресу 0BFE

0833h

FE

0834h

0B

0835h

3E

MVI A, 3E

Запись в аккумулятор кода символа U

0836h

3E

0837h

32

STA 0BFD

Сохранение содержимого аккумулятора по адресу 0BFD

0838h

FD

0839h

0B

083Ah

3e

MVI A, 6D

Запись в аккумулятор кода символа S

083Bh

6d

083Ch

32

STA 0BFC

Сохранение содержимого аккумулятора по адресу 0BFC

083Dh

FC

083Eh

0B

083Fh

3e

MVI A, 79

Запись в аккумулятор кода символа E

0840h

79

0841h

32

STA 0BFB

Сохранение содержимого аккумулятора по адресу 0BFB

0842h

FB

0843h

0B

0844h

3E

MVI A, 00

Запись в аккумулятор кода символа пробел

0845h

00

0846h

32

STA 0BFA

Сохранение содержимого аккумулятора по адресу 0BFA

0847h

FA

0848h

0B

0849h

CD

CALL 01C8

Однократное сканирование дисплея

084Ah

C8

084Bh

01

084Ch

C3

JMP HAUSE

084Dh

2B

084Eh

08

084Fh

IRQ3

F5

PUSH PSW

Запись в стек слова состояния

0850h

FB

EI

Разрешение прерываний

0851h

CLUB

3E

MVI A, 29

Запись в аккумулятор кода символа C

0852h

29

0853h

32

STA 0BFF

Сохранение содержимого аккумулятора по адресу 0BFF

0854h

FF

0855h

0B

0856h

3E

MVI A, 28

Запись в аккумулятор кода символа L

0857h

28

0858h

32

STA 0BFE

Сохранение содержимого аккумулятора по адресу 0BFE

0859h

FE

085Ah

0B

085Bh

3E

MVI A, 2E

Запись в аккумулятор кода символа U

085Ch

2E

085Dh

32

STA 0BFD

Сохранение содержимого аккумулятора по адресу 0BFD

085Eh

FD

085Fh

0B

0860h

3E

MVI A, 7F

Запись в аккумулятор кода символа B

0861h

7F

0862h

32

STA 0BFC

Сохранение содержимого аккумулятора по адресу 0BFC

0863h

FC

0864h

0B

0865h

3E

MVI A, 00

Запись в аккумулятор кода символа _

0866h

00

0867h

32

STA 0BFB

Сохранение содержимого аккумулятора по адресу 0BFB

0868h

FB

0869h

0B

086Ah

3E

MVI A, 00

Запись в аккумулятор кода символа пробел

086Bh

0

086Ch

32

STA 0BFA

Сохранение содержимого аккумулятора по адресу 0BFA

086Dh

FA

086Eh

0B

086Fh

1

LXI B, 0500

Инициализация псевдосчетчика ВС

0870h

0

0871h

5

0872h

Б1

CD

CALL 01C8

Однократное сканирование дисплея

0873h

C8

0874h

01

0875h

CD

CALL 0429

Задержка в 1 мс

0876h

29

0877h

04

0878h

0B

DCX B

Декремент счетчика ВС

0879h

78

MOV A,B

Заносим содержимое B регистра в аккумулятор

087Ah

D6

SUI 00

Вычитаем из A регистра 0 для проверки флагов

087Bh

00

087Ch

С2

JNZ Б1

Переход если В не ноль

087Dh

72

087Eh

08

087Fh

3E

MVI A, 00h

0880h

00

0881h

D3

OUT B1h

Сброс триггера

0882h

B1

0883h

3E

MVI A, 20h

0884h

20

0885h

D3

OUT 98h

Отправка Ведущему команды EOI

0886h

98

0887h

F1

POP PSW

Извлечение из стека слова состояния

0888h

C9

RET

Выход из подпрограммы

0889h

IRQ5

F5

PUSH PSW

Запись в стек слова состояния

088Ah

FB

EI

Разрешение прерываний

088Bh

SPEED

3E

MVI A, 6D

Запись в аккумулятор кода символа S

088Ch

6D

088Dh

32

STA 0BFF

Сохранение содержимого аккумулятора по адресу 0BFF

088Eh

FF

088Fh

0B

0890h

3E

MVI A, 72

Запись в аккумулятор кода символа P

0891h

72

0892h

32

STA 0BFE

Сохранение содержимого аккумулятора по адресу 0BFE

0893h

FE

0894h

0B

0895h

3E

MVI A, 79

Запись в аккумулятор кода символа E

0896h

79

0897h

32

STA 0BFD

Сохранение содержимого аккумулятора по адресу 0BFD

0898h

FD

0899h

0B

089Ah

3E

MVI A, 79

Запись в аккумулятор кода символа E

089Bh

79

089Ch

32

STA 0BFC

Сохранение содержимого аккумулятора по адресу 0BFC

089Dh

FC

089Eh

0B

089Fh

3E

MVI A, 5E

Запись в аккумулятор кода символа D

08A0h

5E

08A1h

32

STA 0BFB

Сохранение содержимого аккумулятора по адресу 0BFB

08A2h

FB

08A3h

0B

08A4h

3E

MVI A, 00

Запись в аккумулятор кода символа _

08A5h

00

08A6h

32

STA 0BFA

Сохранение содержимого аккумулятора по адресу 0BFA

08A7h

FA

08A8h

0B

08A9h

01

LXI B, 0500

Инициализация псевдосчетчика ВС

08AAh

00

08ABh

05

08ACh

Г1

CD

CALL 01C8

Однократное сканирование дисплея

08ADh

C8

08AEh

01

08AFh

CD

CALL 0429

Задержка в 1 мс

08B0h

29

08B1h

04

08B2h

0B

DCX B

Декремент счетчика ВС

08B3h

78

MOV A,B

Заносим содержимое B регистра в аккумулятор

08B4h

D6

SUI 00

Вычитаем из A регистра 0 для проверки флагов

08B5h

00

08B6h

С2

JNZ Г1

Переход если В не ноль

08B7h

AC

08B8h

08

08B9h

3E

MVI A, 00h

08BAh

00

08BBh

D3

OUT B3h

Сброс триггера

08BCh

B3

08BDh

3E

MVI A, 20h

08BEh

20

08BFh

D3

OUT 98h

Отправка Ведущему команды EOI

08C0h

98

08C1h

F1

POP PSW

Извлечение из стека слова состояния

08C2h

C9

RET

Выход из подпрограммы

08C3h

08C4h

08C5h

08C6h

08C7h

08C8h

08C9h

IRQ1

F5

PUSH PSW

Запись в стек слова состояния

08CAh

FB

EI

Разрешение прерываний

08CBh

PLEASE

3E

MVI A, 72

Запись в аккумулятор кода символа P

08CCh

72

08CDh

32

STA 0BFF

Сохранение содержимого аккумулятора по адресу 0BFF

08CEh

FF

08CFh

0B

08D0h

3E

MVI A, 28

Запись в аккумулятор кода символа L

08D1h

28

08D2h

32

STA 0BFE

Сохранение содержимого аккумулятора по адресу 0BFE

08D3h

FE

08D4h

0B

08D5h

3E

MVI A, 79

Запись в аккумулятор кода символа E

08D6h

79

08D7h

32

STA 0BFD

Сохранение содержимого аккумулятора по адресу 0BFD

08D8h

FD

08D9h

0B

08DAh

3E

MVI A, 77

Запись в аккумулятор кода символа A

08DBh

77

08DCh

32

STA 0BFC

Сохранение содержимого аккумулятора по адресу 0BFC

08DDh

FC

08DE

0B

08DF

3E

MVI A, 6D

Запись в аккумулятор кода символа S

08E0

6D

08E1

32

STA 0BFB

Сохранение содержимого аккумулятора по адресу 0BFB

08E2

FB

08E3

0B

08E4

3E

MVI A, 79

Запись в аккумулятор кода символа E

08E5

79

08E6

32

STA 0BFA

Сохранение содержимого аккумулятора по адресу 0BFA

08E7

FA

08E8

0B

08E9

1

LXI B, 0500

Инициализация псевдосчетчика ВС

08EA

0

08EB

5

08EC

Г1

CD

CALL 01C8

Однократное сканирование дисплея

08ED

C8

08EE

1

08EF

CD

CALL 0429

Задержка в 1 мс

08F0

29

08F1

4

08F2

0B

DCX B

Декремент счетчика ВС

08F3

78

MOV A,B

Заносим содержимое B регистра в аккумулятор

08F4

D6

SUI 00

Вычитаем из A регистра 0 для проверки флагов

08F5

0

08F6

С2

JNZ Г1

Переход если В не ноль

08F7

F1

08F8

8

08F9

3E

MVI A, 00h

08FA

0

08FB

D3

OUT B3h

Сброс триггера

08FC

B3

08FD

3E

MVI A, 20h

08FE

20

08FF

D3

OUT 98h

Отправка Ведущему команды EOI

0900

98

0901

F1

POP PSW

Извлечение из стека слова состояния

0902

C9

RET

Выход из подпрограммы

Адрес

Метка

Код

Assembler

Комментарий

0A00h

Начало таблицы векторов

0A01h

IRQ0

0A02h

0A03h

0A04h

C3

JMP IRQ1

IRQ1

0A05h

C9

0A06h

08

0A07h

0A08h

IRQ2

0A09h

0A0Ah

0A0Bh

0A0Ch

C3

JMP IRQ3

IRQ3

0A0Dh

0A0Eh

08

0A0Fh

0A10h

IRQ4

0A11h

0A12h

0A13h

0A14h

C3

JMP IRQ5

IRQ5

0A15h

89

0A16h

08

0A17h

Вывод: в результате лабораторной работы был изучен принцип работы КПР.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]