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

-
Вывод слова ГЕРЦОГ
+

-
Вывод слова ГЕРБ
+
-
|
Адрес |
Метка |
Машинный код |
Ассемблерный код |
Комментарии к выполняемой операции |
|
0810 |
BEGIN |
CD |
CALL 0840 |
Вызов подпрограммы вывода слова ЦАРЬ |
|
0811 |
|
40 |
||
|
0812 |
|
08 |
||
|
0813 |
SCAN |
DB |
IN 05 |
Сканирование порта 05 |
|
0814 |
|
05 |
||
|
0815 |
|
E6 |
ANI 08 |
Аккумулятор |
|
0816 |
|
08 |
||
|
0817 |
|
CA |
JZ A |
Если 3ий разряд в нуле, то не выводим слово БАРОН |
|
0818 |
|
20 |
||
|
0819 |
|
08 |
||
|
081A |
|
CD |
CALL 0870 |
Вызов подпрограммы вывода слова БАРОН |
|
081B |
|
70 |
||
|
081C |
|
08 |
||
|
081D |
|
C3 |
JMP SCAN |
Возврат к сканированию порта 05 |
|
081E |
|
13 |
||
|
081F |
|
08 |
||
|
0820 |
A |
DB |
IN 05 |
Сканирование порта 05 |
|
0821 |
|
05 |
||
|
0822 |
|
E6 |
ANI 20 |
Аккумулятор |
|
0823 |
|
20 |
||
|
0824 |
|
CA |
JZ B |
Если 5ый разряд в нуле, то не выводим слово ГЕРЦОГ |
|
0825 |
|
2D |
||
|
0826 |
|
08 |
||
|
0827 |
|
CD |
CALL 08A0 |
Вызов подпрограммы вывода слова ГЕРЦОГ |
|
0828 |
|
A0 |
||
|
0829 |
|
08 |
||
|
082A |
|
C3 |
JMP SCAN |
Возврат к сканированию порта 05 |
|
082B |
|
13 |
||
|
082C |
|
08 |
||
|
082D |
B |
DB |
IN 05 |
Сканирование порта 05 |
|
082E |
|
05 |
||
|
082F |
|
E6 |
ANI 02 |
Аккумулятор |
|
0830 |
|
02 |
||
|
0831 |
|
CA |
JZ BEGIN |
Если 1ый разряд в нуле, то не выводим слово ГЕРБ |
|
0832 |
|
10 |
||
|
0833 |
|
08 |
||
|
0834 |
|
CD |
CALL 08D0 |
Вызов подпрограммы вывода слова ГЕРБ |
|
0835 |
|
D0 |
||
|
0836 |
|
08 |
||
|
0837 |
|
C3 |
JMP BEGIN |
Возврат к началу программы |
|
0838 |
|
10 |
||
|
0839 |
|
08 |
||
|
083A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0840 |
ЦАРЬ |
3E |
MVI A, BE |
Запись в аккумулятор кода символа Ц |
|
0841 |
|
BE |
||
|
0842 |
|
32 |
STA 0BFF |
Сохранение содержимого аккумулятора по адресу 0BFF |
|
0843 |
|
FF |
||
|
0844 |
|
0B |
||
|
0845 |
|
3E |
MVI A, 77 |
Запись в аккумулятор кода символа А |
|
0846 |
|
77 |
||
|
0847 |
|
32 |
STA 0BFE |
Сохранение содержимого аккумулятора по адресу 0BFE |
|
0848 |
|
FE |
||
|
0849 |
|
0B |
||
|
084A |
|
3E |
MVI A, 73 |
Запись в аккумулятор кода символа Р |
|
084B |
|
73 |
||
|
084C |
|
32 |
STA 0BFD |
Сохранение содержимого аккумулятора по адресу 0BFD |
|
084D |
|
FD |
||
|
084E |
|
0B |
||
|
084F |
|
3E |
MVI A, 7С |
Запись в аккумулятор кода символа Ь |
|
0850 |
|
7С |
||
|
0851 |
|
32 |
STA 0BFC |
Сохранение содержимого аккумулятора по адресу 0BFC |
|
0852 |
|
FC |
||
|
0853 |
|
0B |
||
|
0854 |
|
3E |
MVI A, 00 |
Запись в аккумулятор кода символа пробел |
|
0855 |
|
00 |
||
|
0856 |
|
32 |
STA 0BFB |
Сохранение содержимого аккумулятора по адресу 0BFB |
|
0857 |
|
FB |
||
|
0858 |
|
0B |
||
|
0859 |
|
3E |
MVI A, 00 |
Запись в аккумулятор кода символа пробел |
|
085A |
|
00 |
||
|
085B |
|
32 |
STA 0BFA |
Сохранение содержимого аккумулятора по адресу 0BFA |
|
085C |
|
FA |
||
|
085D |
|
0B |
||
|
085E |
|
CD |
CALL 01C8 |
Однократное сканирование дисплея |
|
085F |
|
C8 |
||
|
0860 |
|
01 |
||
|
0861 |
|
C9 |
RET |
Извлечение из стека адреса возврата в программу |
|
0870 |
БАРОН |
3E |
MVI A, 7D |
Запись в аккумулятор кода символа Б |
|
0871 |
|
7D |
||
|
0872 |
|
32 |
STA 0BFF |
Сохранение содержимого аккумулятора по адресу 0BFF |
|
0873 |
|
FF |
||
|
0874 |
|
0B |
||
|
0875 |
|
3E |
MVI A, 77 |
Запись в аккумулятор кода символа А |
|
0876 |
|
77 |
||
|
0877 |
|
32 |
STA 0BFE |
Сохранение содержимого аккумулятора по адресу 0BFE |
|
0878 |
|
FE |
||
|
0879 |
|
0B |
||
|
087A |
|
3E |
MVI A, 73 |
Запись в аккумулятор кода символа Р |
|
087B |
|
73 |
||
|
087C |
|
32 |
STA 0BFD |
Сохранение содержимого аккумулятора по адресу 0BFD |
|
087D |
|
FD |
||
|
087E |
|
0B |
||
|
087F |
|
3E |
MVI A, 3F |
Запись в аккумулятор кода символа О |
|
0880 |
|
3F |
||
|
0881 |
|
32 |
STA 0BFC |
Сохранение содержимого аккумулятора по адресу 0BFC |
|
0882 |
|
FC |
||
|
0883 |
|
0B |
||
|
0884 |
|
3E |
MVI A, 76 |
Запись в аккумулятор кода символа Н |
|
0885 |
|
76 |
||
|
0886 |
|
32 |
STA 0BFB |
Сохранение содержимого аккумулятора по адресу 0BFB |
|
0887 |
|
FB |
||
|
0888 |
|
0B |
||
|
0889 |
|
3E |
MVI A, 00 |
Запись в аккумулятор кода символа пробел |
|
088A |
|
00 |
||
|
088B |
|
32 |
STA 0BFA |
Сохранение содержимого аккумулятора по адресу 0BFA |
|
088C |
|
FA |
||
|
088D |
|
0B |
||
|
088E |
|
01 |
LXI B, 0500 |
Инициализация псевдосчетчика ВС |
|
088F |
|
00 |
||
|
0890 |
|
05 |
||
|
0891 |
Б1 |
CD |
CALL 01C8 |
Однократное сканирование дисплея |
|
0892 |
|
C8 |
||
|
0893 |
|
01 |
||
|
0894 |
|
CD |
CALL 0429 |
Задержка в 1 мс |
|
0895 |
|
29 |
||
|
0896 |
|
04 |
||
|
0897 |
|
0B |
DCX B |
Декремент счетчика ВС |
|
0898 |
|
78 |
MOV A,B |
Заносим содержимое B регистра в аккумулятор |
|
0899 |
|
D6 |
SUI 00 |
Вычитаем из A регистра 0 для проверки флагов |
|
089A |
|
00 |
||
|
089B |
|
С2 |
JNZ Б1 |
Переход если В не ноль |
|
089C |
|
91 |
||
|
089D |
|
08 |
||
|
089E |
|
C9 |
RET |
Извлечение из стека адреса возврата в программу |
|
08A0 |
ГЕРЦОГ |
3E |
MVI A, 31 |
Запись в аккумулятор кода символа Г |
|
08A1 |
|
31 |
||
|
08A2 |
|
32 |
STA 0BFF |
Сохранение содержимого аккумулятора по адресу 0BFF |
|
08A3 |
|
FF |
||
|
08A4 |
|
0B |
||
|
08A5 |
|
3E |
MVI A, 79 |
Запись в аккумулятор кода символа Е |
|
08A6 |
|
79 |
||
|
08A7 |
|
32 |
STA 0BFE |
Сохранение содержимого аккумулятора по адресу 0BFE |
|
08A8 |
|
FE |
||
|
08A9 |
|
0B |
||
|
08AA |
|
3E |
MVI A, 73 |
Запись в аккумулятор кода символа Р |
|
08AB |
|
73 |
||
|
08AC |
|
32 |
STA 0BFD |
Сохранение содержимого аккумулятора по адресу 0BFD |
|
08AD |
|
FD |
||
|
08AE |
|
0B |
||
|
08AF |
|
3E |
MVI A, BE |
Запись в аккумулятор кода символа Ц |
|
08B0 |
|
BE |
||
|
08B1 |
|
32 |
STA 0BFC |
Сохранение содержимого аккумулятора по адресу 0BFC |
|
08B2 |
|
FC |
||
|
08B3 |
|
0B |
||
|
08B4 |
|
3E |
MVI A, 3F |
Запись в аккумулятор кода символа О |
|
08B5 |
|
3F |
||
|
08B6 |
|
32 |
STA 0BFB |
Сохранение содержимого аккумулятора по адресу 0BFB |
|
08B7 |
|
FB |
||
|
08B8 |
|
0B |
||
|
08B9 |
|
3E |
MVI A, 31 |
Запись в аккумулятор кода символа Г |
|
08BA |
|
31 |
||
|
08BB |
|
32 |
STA 0BFA |
Сохранение содержимого аккумулятора по адресу 0BFA |
|
08BC |
|
FA |
||
|
08BD |
|
0B |
||
|
08BE |
|
01 |
LXI B, 0500 |
Инициализация псевдосчетчика ВС |
|
08BF |
|
00 |
||
|
08C0 |
|
05 |
||
|
08C1 |
Г1 |
CD |
CALL 01C8 |
Однократное сканирование дисплея |
|
08C2 |
|
C8 |
||
|
08C3 |
|
01 |
||
|
08C4 |
|
CD |
CALL 0429 |
Задержка в 1 мс |
|
08C5 |
|
29 |
||
|
08C6 |
|
04 |
||
|
08C7 |
|
0B |
DCX B |
Декремент счетчика ВС |
|
08C8 |
|
78 |
MOV A,B |
Заносим содержимое B регистра в аккумулятор |
|
08C9 |
|
D6 |
SUI 00 |
Вычитаем из A регистра 0 для проверки флагов |
|
08CA |
|
00 |
||
|
08CB |
|
С2 |
JNZ Г1 |
Переход если В не ноль |
|
08CC |
|
С1 |
||
|
08СD |
|
08 |
||
|
08CE |
|
C9 |
RET |
Извлечение из стека адреса возврата в программу |
