ПМСУ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 |
АккумуляторАккумулятор & 00001000 |
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 |
АккумуляторАккумулятор & 00100000 |
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 |
АккумуляторАккумулятор & 00000010 |
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 |
Извлечение из стека адреса возврата в программу |