
- •Сравнение аккумулятора с регистром
- •Запись в регистр 10
- •Вызов пп1
- •Сравнение аккумулятора с регистром
- •Чтение из порта 05 в аккумулятор
- •Наложение маски на аккумулятор (00010010)
- •Запись в регистр 02
- •Запись слова «буран»
- •Инициализация счетчика
- •Однократное сканирование дисплея
- •Декремент счетчика
- •Возврат в основную программу
Российская Федерация
Ханты - Мансийский автономный округ - ЮГРА
Департамент образования и науки
Сургутский государственный университет ХМАО
Факультет автоматики и телекоммуникаций
Кафедра автоматики и компьютерных систем
ОТЧЕТ
по лабораторной работе №6
по дисциплине «Вычислительные машины»
Выполнили: студенты
Принял: Запевалов А.В.
Сургут
Цель работы: Создать программное обеспечение отображающее основную надпись и реагирующее на запросы от трех источников прерываний. Обработку запроса на прерывание осуществлять с помощью программного полинга. Подпрограммы обслуживания запросов осуществляют отображения на дисплей в течении 3-5 секунд определенные надписи.
Вариант №2.
№ вар-а |
Осн.надп. |
№ IRQ |
надпись |
№ IRQ |
надпись |
№ IRQ |
надпись |
2 |
СУГРОБ |
4 |
БУРАН |
1 |
ПУРГА |
3 |
СНЕГ |
Блок-схема:
Основная программа
Чтение из порта 05 в аккумулятор
Наложение маски на аккумулятор (00010000)
Да
НетСравнение аккумулятора с регистром
Запись в регистр 10
Вызов пп1
Сравнение аккумулятора с регистром
Чтение из порта 05 в аккумулятор
Наложение маски на аккумулятор (00010010)
Запись в регистр 02
Да
Вызов ПП2
Нет
Сравнение аккумулятора с регистром
Чтение из порта 05 в аккумулятор
Наложение маски на аккумулятор (00011010)
Запись в регистр 08
Нет
Да
Вызов ПП3
Запись слова «СУГРОБ»
Однократное сканирование дисплея
Подпрограмма №1
Запись слова «буран»
Инициализация счетчика
Нет
ДаОднократное сканирование дисплея
Декремент счетчика
Возврат в основную программу
П
Запись слова «ПУРГА»
Инициализация счетчика
Однократное сканирование дисплея
Декремент счетчика
Да
Возврат в основную программу
Нет
П
Запись слова «СНЕГ»
Инициализация счетчика
Однократное сканирование дисплея
Декремент счетчика
Да
Возврат в основную программу
Основная программа
Адрес |
Метка |
Машинный код |
Код на языке Assembler |
Комментарий |
|
0810 |
M1 |
DB |
IN |
05 |
Запись в А-регистр содержимого PORT 05 |
0811 |
|
05 |
|
|
|
0812 |
|
E6 |
ANI |
10 |
Наложение на А маски 0001 0000 |
0813 |
|
10 |
|
|
|
0814 |
|
06 |
MVI |
B,10 |
Запись в B-регистр числа 10 |
0815 |
|
10 |
|
|
|
0816 |
|
B8 |
CMP |
B |
Сравнение содержимого B-регистра с содержимым A-регистра |
0817 |
|
CC |
CZ |
0850 |
Вызов подпрограммы №1, если содержимое |
0818 |
|
50 |
|
|
А-регистра равняется содержимому В-регистра |
0819 |
|
08 |
|
|
|
081A |
|
DB |
IN |
05 |
Запись в А-регистр содержимого PORT 05 |
081B |
|
05 |
|
|
|
081C |
|
E6 |
ANI |
12 |
Наложение на А маски 0001 0010 |
081D |
|
12 |
|
|
|
081E |
|
06 |
MVI |
B,02 |
Запись в B-регистр числа 02 |
081F |
|
02 |
|
|
|
0820 |
|
B8 |
CMP |
B |
Сравнение содержимого B-регистра с содержимым A-регистра |
0821 |
|
CC |
CZ |
0880 |
Вызов подпрограммы №2, если содержимое |
0822 |
|
80 |
|
|
А-регистра равняется содержимому В-регистра |
0823 |
|
08 |
|
|
|
0824 |
|
DB |
IN |
05 |
Запись в А-регистр содержимого PORT 05 |
0825 |
|
05 |
|
|
|
0826 |
|
E6 |
ANI |
1А |
Наложение на А маски 0001 1010 |
0827 |
|
1А |
|
|
|
0828 |
|
06 |
MVI |
B,08 |
Запись в B-регистр числа 08 |
0829 |
|
08 |
|
|
|
082A |
|
B8 |
CMP |
B |
Сравнение содержимого B-регистра с содержимым A-регистра |
082B |
|
CC |
CZ |
08B0 |
Вызов подпрограммы №3, если содержимое |
082C |
|
B0 |
|
|
А-регистра равняется содержимому В-регистра |
082D |
|
08 |
|
|
|
082E |
|
21 |
LXI |
H,0BFA |
Инициализация указателя |
082F |
|
FA |
|
|
|
0830 |
|
0B |
|
|
|
0831 |
|
36 |
MVI |
M, 7D |
Запись буквы “Б” в ячейку памяти |
0832 |
|
7D |
|
|
|
0833 |
|
23 |
INX |
H |
Инкремент указателя |
0834 |
|
36 |
MVI |
M, 3F |
Запись буквы “О” в ячейку памяти |
0835 |
|
3F |
|
|
|
0836 |
|
23 |
INX |
H |
Инкремент указателя |
0837 |
|
36 |
MVI |
M, 73 |
Запись буквы “Р” в ячейку памяти |
0838 |
|
73 |
|
|
|
0839 |
|
23 |
INX |
H |
|
083A |
|
36 |
MVI |
M, 31 |
Запись буквы “Г” в ячейку памяти |
083B |
|
31 |
|
|
|
083C |
|
23 |
INX |
H |
|
083D |
|
36 |
MVI |
M, 6E |
Запись буквы “У” в ячейку памяти |
083E |
|
6E |
|
|
|
083F |
|
23 |
INX |
H |
Инкремент указателя |
0840 |
|
36 |
MVI |
M, 39 |
Запись буквы “С” в ячейку памяти |
0841 |
|
39 |
|
|
|
0842 |
|
CD |
CALL |
01С8 |
Однократное сканирование дисплея |
0843 |
|
С8 |
|
|
|
0844 |
|
01 |
|
|
|
0845 |
|
C3 |
JMP |
M1 |
Безусловный переход на метку M1 |
0846 |
|
10 |
|
|
|
0847 |
|
08 |
|
|
|
Подпрограмма №1
Адрес |
Метка |
Машинный код |
Код на языке Assembler |
Комментарий |
|
0850 |
|
21 |
LXI |
H, 0BFA |
Инициализация указателя |
0851 |
|
FA |
|
|
|
0852 |
|
0B |
|
|
|
0853 |
|
36 |
MVI |
M, 00 |
Запись “ ” символа в ячейку памяти |
0854 |
|
00 |
|
|
|
0855 |
|
23 |
INX |
H |
Инкремент указателя |
0856 |
|
36 |
MVI |
M, 76 |
Запись буквы “Н” в ячейку памяти |
0857 |
|
76 |
|
|
|
0858 |
|
23 |
INX |
H |
|
0859 |
|
36 |
MVI |
M, 77 |
Запись буквы “А” в ячейку памяти |
085A |
|
77 |
|
|
|
085B |
|
23 |
INX |
H |
Инкремент указателя |
085C |
|
36 |
MVI |
M, 73 |
Запись буквы “Р” в ячейку памяти |
085D |
|
73 |
|
|
|
085E |
|
23 |
INX |
H |
Инкремент указателя |
085F |
|
36 |
MVI |
M, 6E |
Запись буквы “У” в ячейку памяти |
0860 |
|
6E |
|
|
|
0861 |
|
23 |
INX |
H |
Инкремент указателя |
0862 |
|
36 |
MVI |
M, 7D |
Запись буквы “Б” в ячейку памяти |
0863 |
|
7D |
|
|
|
0864 |
|
0E |
MVI |
C, 40 |
Инициализация счетчика |
0865 |
|
FF |
|
|
|
0866 |
M2 |
CD |
CALL |
0429 |
Вызов подпрограмм задержки на 1мс |
0867 |
|
29 |
|
|
|
0868 |
|
04 |
|
|
|
0869 |
|
CD |
CALL |
01C8 |
Однократное сканирование дисплея |
086A |
|
C8 |
|
|
|
086B |
|
01 |
|
|
|
086C |
|
0D |
DCR |
C |
Декремент счетчика |
086D |
|
C2 |
JNZ |
M2 |
Если счетчик не равен нулю, |
086E |
|
66 |
|
|
то переход на метку M2 |
086F |
|
08 |
|
|
|
0870 |
|
C9 |
RET |
|
Возврат |
Подпрограмма №2
Адрес |
Метка |
Машинный код |
Код на языке Assembler |
Комментарий |
|
0880 |
|
21 |
LXI |
H, 0BFA |
Инициализация указателя |
0881 |
|
FA |
|
|
|
0882 |
|
0B |
|
|
|
0883 |
|
36 |
MVI |
M, 00 |
Запись “ ” символа в ячейку памяти |
0884 |
|
00 |
|
|
|
0885 |
|
23 |
INX |
H |
Инкремент указателя |
0886 |
|
36 |
MVI |
M, 77 |
Запись “ А ” символа в ячейку памяти |
0887 |
|
77 |
|
|
|
0888 |
|
23 |
INX |
H |
Инкремент указателя |
0889 |
|
36 |
MVI |
M, 31 |
Запись буквы “ Г ” в ячейку памяти |
088A |
|
31 |
|
|
|
088B |
|
23 |
INX |
H |
Инкремент указателя |
088C |
|
36 |
MVI |
M, 73 |
Запись буквы “ Р ” в ячейку памяти |
088D |
|
73 |
|
|
|
088E |
|
23 |
INX |
H |
Инкремент указателя |
088F |
|
36 |
MVI |
M, 6E |
Запись буквы “ У ” в ячейку памяти |
0890 |
|
6E |
|
|
|
0891 |
|
23 |
INX |
H |
Инкремент указателя |
0892 |
|
36 |
MVI |
M, 37 |
Запись буквы “П” в ячейку памяти |
0893 |
|
37 |
|
|
|
0894 |
|
0E |
MVI |
C, 40 |
Инициализация счетчика |
0895 |
|
FF |
|
|
|
0896 |
M3 |
CD |
CALL |
0429 |
Вызов подпрограмм задержки на 1мс |
0897 |
|
29 |
|
|
|
0898 |
|
04 |
|
|
|
0899 |
|
CD |
CALL |
01C8 |
Однократное сканирование дисплея |
089A |
|
C8 |
|
|
|
089B |
|
01 |
|
|
|
089C |
|
0D |
DCR |
C |
Декремент счетчика |
089D |
|
C2 |
JNZ |
M3 |
Если счетчик не равен нулю, |
089E |
|
96 |
|
|
то переход на метку M2 |
089F |
|
08 |
|
|
|
08A0 |
|
C9 |
RET |
|
Возврат |
Подпрограмма №3
Адрес |
Метка |
Машинный код |
Код на языке Assembler |
Комментарий |
|
08B0 |
|
21 |
LXI |
H, 0BFA |
Инициализация указателя |
08B1 |
|
FA |
|
|
|
08B2 |
|
0B |
|
|
|
08B3 |
|
36 |
MVI |
M, 00 |
Запись “ ” символа в ячейку памяти |
08B4 |
|
00 |
|
|
|
08B5 |
|
23 |
INX |
H |
Инкремент указателя |
08B6 |
|
36 |
MVI |
M, 00 |
Запись “ ” символа в ячейку памяти |
08B7 |
|
00 |
|
|
|
08B8 |
|
23 |
INX |
H |
Инкремент указателя |
08B9 |
|
36 |
MVI |
M, 31 |
Запись буквы “ Г ” в ячейку памяти |
08BA |
|
31 |
|
|
|
08BB |
|
23 |
INX |
H |
Инкремент указателя |
08BC |
|
36 |
MVI |
M, 79 |
Запись буквы “ Е ” в ячейку памяти |
08BD |
|
79 |
|
|
|
08BE |
|
23 |
INX |
H |
Инкремент указателя |
08BF |
|
36 |
MVI |
M, 76 |
Запись буквы “ Н ” в ячейку памяти |
08C0 |
|
76 |
|
|
|
08C1 |
|
23 |
INX |
H |
Инкремент указателя |
08C2 |
|
36 |
MVI |
M, 39 |
Запись буквы “С” в ячейку памяти |
08C3 |
|
39 |
|
|
|
08C4 |
|
0E |
MVI |
C, 40 |
Инициализация счетчика |
08C5 |
|
FF |
|
|
|
08C6 |
M4 |
CD |
CALL |
0429 |
Вызов подпрограмм задержки на 1мс |
08C7 |
|
29 |
|
|
|
08C8 |
|
04 |
|
|
|
08C9 |
|
CD |
CALL |
01C8 |
Однократное сканирование дисплея |
08CA |
|
C8 |
|
|
|
08CB |
|
01 |
|
|
|
08CC |
|
0D |
DCR |
C |
Декремент счетчика |
08CD |
|
C2 |
JNZ |
M4 |
Если счетчик не равен нулю, |
08CE |
|
C6 |
|
|
то переход на метку M2 |
08CF |
|
08 |
|
|
|
08D0 |
|
C9 |
RET |
|
Возврат |
Вывод: В данной лабораторной работе мы научились создавать программное обеспечение, отображающее основную надпись и реагирующее на запросы от трех источников прерываний. Обработку запроса на прерывание осуществляли с помощью программного полинга.