ПМСУ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 |
Выход из подпрограммы |