ПМСУ1(4)
.doc
ГОУ ВПО Сургутский государственный университет
ХМАО – Югры
Факультет автоматики и телекоммуникаций
Кафедра автоматики и компьютерных систем
Отчёт по лабораторной работе №6.
«Изучение особенностей функционирования КПР»
Выполнили
Проверил доцент
Запевалов А. В.
Цель работы: изучить особенности функционирования КПР.
Задание: Создать программное обеспечение, отображающее основную надпись и реагирующее на запросы от трёх источников прерываний. Подпрограммы обслуживания запросов осуществляют отображение на дисплее в течение 3-5 секунд определённой надписи.
Вариант 25.
|
Основная надпись |
№ IRQ |
Надпись |
№ IRQ |
Надпись |
№ IRQ |
Надпись |
|
Югра |
4 |
СурГУ |
5 |
гр. 1271 |
3 |
учеба |
Блок-схема алгоритма программы:

Блок-схема алгоритма обработки IRQ4:

Блок-схема алгоритма обработки IRQ5:

Блок-схема алгоритма обработки IRQ3:

Код программы:
|
Адрес |
Метка |
Код |
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 |
|
07 |
|
|
|
0812h |
|
D3 |
OUT 9Dh |
Отправка Ведомому КИ3 (00000111) |
|
0813h |
|
9D |
|
|
|
0814h |
|
3E |
MVI A, С7h |
Инициализация (11000111) (КО1) |
|
0815h |
|
С7 |
|
|
|
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, C3h |
Инициализация (11000011) (КО2д) |
|
081Dh |
|
C3 |
|
|
|
081Eh |
|
D3 |
OUT 98h |
Дно приоритетов Ведущего на IRQ3 |
|
081Fh |
|
98 |
|
|
|
0820h |
|
D3 |
OUT 9Ch |
Дно приоритетов Ведомого на IRQ3 |
|
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 |
M1 |
21 |
LXI H, 0BFAh |
Инициализация указателя |
|
082Ch |
|
FA |
|
|
|
082Dh |
|
0B |
|
|
|
082Eh |
|
36 |
MVI M, 00h |
Запись кода пробела |
|
082Fh |
|
00 |
|
|
|
0830h |
|
23 |
INX H |
Инкремент указателя |
|
0831h |
|
36 |
MVI M, 77h |
Запись кода буквы «А» |
|
0832h |
|
77 |
|
|
|
0833h |
|
23 |
INX H |
Инкремент указателя |
|
0834h |
|
36 |
MVI M, 73h |
Запись кода буквы «Р» |
|
0835h |
|
73 |
|
|
|
0836h |
|
23 |
INX H |
Инкремент указателя |
|
0837h |
|
36 |
MVI M, 31h |
Запись кода буквы «Г» |
|
0838h |
|
31 |
|
|
|
0839h |
|
23 |
INX H |
Инкремент указателя |
|
083Ah |
|
36 |
MVI M, 3Fh |
Запись кода буквы «О» |
|
083Bh |
|
3F |
|
|
|
083Ch |
|
23 |
INX H |
Инкремент указателя |
|
083Dh |
|
36 |
MVI M, 70h |
Запись кода буквы « » |
|
083Eh |
|
70 |
|
|
|
083Fh |
|
CD |
CALL 01C8h |
Сканирование дисплея |
|
0840h |
|
C8 |
|
|
|
0841h |
|
01 |
|
|
|
0842h |
|
C3 |
JMP M1 |
|
|
0843h |
|
2B |
|
|
|
0844h |
|
08 |
|
|
|
0845h |
IRQ4 |
F5 |
PUSH PSW |
Запись в стек слова состояния |
|
0846h |
|
C5 |
PUSH B |
Запись в стек пары BC |
|
0847h |
|
E5 |
PUSH H |
Запись в стек пары HL |
|
0848h |
|
FB |
EI |
Разрешение прерываний |
|
0849h |
|
06 |
MVI B, 02h |
Инициализация 1-го счётчика |
|
084Ah |
|
02 |
|
|
|
084Bh |
M2 |
0E |
MVI C, FFh |
Инициализация 2-го счётчика |
|
084Ch |
|
FF |
|
|
|
084Dh |
M3 |
21 |
LXI H, 0BFAh |
Инициализация указателя |
|
084Eh |
|
FA |
|
|
|
084Fh |
|
0B |
|
|
|
0850h |
|
36 |
MVI M, 00h |
Запись кода пробела |
|
0851h |
|
00 |
|
|
|
0852h |
|
23 |
INX H |
Инкремент указателя |
|
0853h |
|
36 |
MVI M, 6Eh |
Запись кода буквы «У» |
|
0854h |
|
6E |
|
|
|
0855h |
|
23 |
INX H |
Инкремент указателя |
|
0856h |
|
36 |
MVI M, 31h |
Запись кода буквы «Г» |
|
0857h |
|
31 |
|
|
|
0858h |
|
23 |
INX H |
Инкремент указателя |
|
0859h |
|
36 |
MVI M, 73h |
Запись кода буквы «Р» |
|
085Ah |
|
73 |
|
|
|
085Bh |
|
23 |
INX H |
Инкремент указателя |
|
085Ch |
|
36 |
MVI M, 6Eh |
Запись кода буквы «У» |
|
085Dh |
|
6E |
|
|
|
085Eh |
|
23 |
INX H |
Инкремент указателя |
|
085Fh |
|
36 |
MVI M, 39h |
Запись кода буквы «С» |
|
0860h |
|
39 |
|
|
|
0861h |
|
CD |
CALL 01C8h |
Сканирование дисплея |
|
0862h |
|
C8 |
|
|
|
0863h |
|
01 |
|
|
|
0864h |
|
0D |
DCR C |
Декремент 2-го счётчика |
|
0865h |
|
C2 |
JNZ M3 |
|
|
0866h |
|
4D |
|
|
|
0867h |
|
08 |
|
|
|
0868h |
|
05 |
DCR B |
Декремент 1-го счётчика |
|
0869h |
|
C2 |
JNZ M2 |
|
|
086Ah |
|
4B |
|
|
|
086Bh |
|
08 |
|
|
|
086Ch |
|
3E |
MVI A, 00h |
|
|
086Dh |
|
00 |
|
|
|
086Eh |
|
D3 |
OUT B2h |
Сброс триггера |
|
086Fh |
|
B2 |
|
|
|
0870h |
|
3E |
MVI A, 20h |
|
|
0871h |
|
20 |
|
|
|
0872h |
|
D3 |
OUT 98h |
Отправка Ведущему команды EOI |
|
0873h |
|
98 |
|
|
|
0874h |
|
E1 |
POP H |
Извлечение из стека пары HL |
|
0875h |
|
C1 |
POP B |
Извлечение из стека пары BC |
|
0876h |
|
F1 |
POP PSW |
Извлечение из стека слова состояния |
|
0877h |
|
C9 |
RET |
Выход из подпрограммы |
|
0878h |
IRQ5 |
F5 |
PUSH PSW |
Запись в стек слова состояния |
|
0879h |
|
C5 |
PUSH B |
Запись в стек пары BC |
|
087Ah |
|
E5 |
PUSH H |
Запись в стек пары HL |
|
087Bh |
|
FB |
EI |
Разрешение прерываний |
|
087Ch |
|
06 |
MVI B, 02h |
Инициализация 1-го счётчика |
|
087Dh |
|
02 |
|
|
|
087Eh |
M4 |
0E |
MVI C, FFh |
Инициализация 2-го счётчика |
|
087Fh |
|
FF |
|
|
|
0880h |
M5 |
21 |
LXI H, 0BFAh |
Инициализация указателя |
|
0881h |
|
FA |
|
|
|
0882h |
|
0B |
|
|
|
0883h |
|
36 |
MVI M, 06h |
Запись кода цифры «1» |
|
0884h |
|
06 |
|
|
|
0885h |
|
23 |
INX H |
Инкремент указателя |
|
0886h |
|
36 |
MVI M, 07h |
Запись кода цифры «7» |
|
0887h |
|
07 |
|
|
|
0888h |
|
23 |
INX H |
Инкремент указателя |
|
0889h |
|
36 |
MVI M, 5Bh |
Запись кода цифры «2» |
|
088Ah |
|
5B |
|
|
|
088Bh |
|
23 |
INX H |
Инкремент указателя |
|
088Ch |
|
36 |
MVI M, 06h |
Запись кода цифры «1» |
|
088Dh |
|
06 |
|
|
|
088Eh |
|
23 |
INX H |
Инкремент указателя |
|
088Fh |
|
36 |
MVI M, F3h |
Запись кода буквы «Р.» |
|
0890h |
|
F3 |
|
|
|
0891h |
|
23 |
INX H |
Инкремент указателя |
|
0892h |
|
36 |
MVI M, 31h |
Запись кода буквы «Г» |
|
0893h |
|
31 |
|
|
|
0894h |
|
CD |
CALL 01C8h |
Сканирование дисплея |
|
0895h |
|
C8 |
|
|
|
0896h |
|
01 |
|
|
|
0897h |
|
0D |
DCR C |
Декремент 2-го счётчика |
|
0898h |
|
C2 |
JNZ M5 |
|
|
0899h |
|
80 |
|
|
|
089Ah |
|
08 |
|
|
|
089Bh |
|
05 |
DCR B |
Декремент 1-го счётчика |
|
089Ch |
|
C2 |
JNZ M4 |
|
|
089Dh |
|
7E |
|
|
|
089Eh |
|
08 |
|
|
|
089Fh |
|
3E |
MVI A, 00h |
|
|
08A0h |
|
00 |
|
|
|
08A1h |
|
D3 |
OUT B3h |
Сброс триггера |
|
08A2h |
|
B3 |
|
|
|
08A3h |
|
3E |
MVI A, 20h |
|
|
08A4h |
|
20 |
|
|
|
08A5h |
|
D3 |
OUT 98h |
Отправка Ведущему команды EOI |
|
08A6h |
|
98 |
|
|
|
08A7h |
|
E1 |
POP H |
Извлечение из стека пары HL |
|
08A8h |
|
C1 |
POP B |
Извлечение из стека пары BC |
|
08A9h |
|
F1 |
POP PSW |
Извлечение из стека слова состояния |
|
08AAh |
|
C9 |
RET |
Выход из подпрограммы |
|
08ABh |
IRQ3 |
F5 |
PUSH PSW |
Запись в стек слова состояния |
|
08ACh |
|
C5 |
PUSH B |
Запись в стек пары BC |
|
08ADh |
|
E5 |
PUSH H |
Запись в стек пары HL |
|
08AEh |
|
FB |
EI |
Разрешение прерываний |
|
08AFh |
|
06 |
MVI B, 02h |
Инициализация 1-го счётчика |
|
08B0h |
|
02 |
|
|
|
08B1h |
M6 |
0E |
MVI C, FFh |
Инициализация 2-го счётчика |
|
08B2h |
|
FF |
|
|
|
08B3h |
M7 |
21 |
LXI H, 0BFAh |
Инициализация указателя |
|
08B4h |
|
FA |
|
|
|
08B5h |
|
0B |
|
|
|
08B6h |
|
36 |
MVI M, 00h |
Запись кода пробела |
|
08B7h |
|
00 |
|
|
|
08B8h |
|
23 |
INX H |
Инкремент указателя |
|
08B9h |
|
36 |
MVI M, 77h |
Запись кода буквы «А» |
|
08BAh |
|
77 |
|
|
|
08BBh |
|
23 |
INX H |
Инкремент указателя |
|
08BCh |
|
36 |
MVI M, 7Dh |
Запись кода буквы «Б» |
|
08BDh |
|
7D |
|
|
|
08BEh |
|
23 |
INX H |
Инкремент указателя |
|
08BFh |
|
36 |
MVI M, 73h |
Запись кода буквы «Е» |
|
08C0h |
|
73 |
|
|
|
08C1h |
|
23 |
INX H |
Инкремент указателя |
|
08C2h |
|
36 |
MVI M, 66h |
Запись кода буквы «Ч» |
|
08C3h |
|
66 |
|
|
|
08C4h |
|
23 |
INX H |
Инкремент указателя |
|
08C5h |
|
36 |
MVI M, 6Eh |
Запись кода буквы «У» |
|
08C6h |
|
6E |
|
|
|
08C7h |
|
CD |
CALL 01C8h |
Сканирование дисплея |
|
08C8h |
|
C8 |
|
|
|
08C9h |
|
01 |
|
|
|
08CAh |
|
0D |
DCR C |
Декремент 2-го счётчика |
|
08CBh |
|
C2 |
JNZ M7 |
|
|
08CCh |
|
B3 |
|
|
|
08CDh |
|
08 |
|
|
|
08CEh |
|
05 |
DCR B |
Декремент 1-го счётчика |
|
08CFh |
|
C2 |
JNZ M6 |
|
|
08D0h |
|
B1 |
|
|
|
08D1h |
|
08 |
|
|
|
08D2h |
|
3E |
MVI A, 00h |
|
|
08D3h |
|
00 |
|
|
|
08D4h |
|
D3 |
OUT B1h |
Сброс триггера |
|
08D5h |
|
B1 |
|
|
|
08D6h |
|
3E |
MVI A, 20h |
|
|
08D7h |
|
20 |
|
|
|
08D8h |
|
D3 |
OUT 98h |
Отправка Ведущему команды EOI |
|
08D9h |
|
98 |
|
|
|
08DAh |
|
E1 |
POP H |
Извлечение из стека пары HL |
|
08DBh |
|
C1 |
POP B |
Извлечение из стека пары BC |
|
08DCh |
|
F1 |
POP PSW |
Извлечение из стека слова состояния |
|
08DDh |
|
C9 |
RET |
Выход из подпрограммы |
