- •Запись в стек слова состояния
- •Запись символа н в аккумулятор
- •Разрешение прерываний
- •Запись символа 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
- •Извлечение из стека слова состояния
- •Выход из подпрограммы
Российская Федерация
Тюменская область
ХАНТЫ-МАНСИЙСКИЙ АВТОНОМНЫЙ ОКРУГ –ЮГРА
Департамент образования и науки
Сургутский государственный университет
Ханты-Мансийского автономного округа
Факультет автоматики и телекоммуникаций
Кафедра автоматики и компьютерных систем
Отчет
По лабораторной работе № 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 |
|
4а |
|
|
0A0Eh |
|
08 |
|
|
0A0Fh |
|
|
|
|
0A10h |
|
|
|
IRQ4 |
0A11h |
|
|
|
|
0A12h |
|
|
|
|
0A13h |
|
|
|
|
0A14h |
|
C3 |
JMP IRQ5 |
IRQ5 |
0A15h |
|
89 |
|
|
0A16h |
|
08 |
|
|
0A17h |
|
|
|
|
Вывод: в результате лабораторной работы был изучен принцип работы КПР.