-
Листинг программы:
|
Адрес |
Метка |
Машинный код |
Асс. код |
Комментарии |
|
0800 |
|
3E |
MVI A, 00h |
Сброс триггеров |
|
0801 |
|
00 |
|
|
|
0802 |
|
D3 |
OUT В1 |
|
|
0803 |
|
В1 |
|
|
|
0804 |
|
D3 |
OUT В2 |
|
|
0805 |
|
B2 |
|
|
|
0806 |
|
3E |
MVI A, 54h |
КИ1 |
|
0807 |
|
54 |
|
|
|
0808 |
|
D3 |
OUT 98 |
|
|
0809 |
|
98 |
|
|
|
080A |
|
D3 |
OUT 9C |
|
|
080B |
|
9C |
|
|
|
080C |
|
3E |
MVI A, 08h |
КИ2 |
|
080D |
|
08 |
|
|
|
080E |
|
D3 |
OUT 99 |
|
|
080F |
|
99 |
|
|
|
0810 |
|
D3 |
OUT 9D |
|
|
0811 |
|
9D |
|
|
|
0812 |
|
3E |
MVI A, 81h |
КИ3 MASTER |
|
0813 |
|
81 |
|
|
|
0814 |
|
D3 |
OUT 99 |
|
|
0815 |
|
99 |
|
|
|
0816 |
|
3E |
MVI A, 07h |
КИ3 SLAVE |
|
0817 |
|
07 |
|
|
|
0818 |
|
D3 |
OUT 9D |
|
|
0819 |
|
9D |
|
|
|
081A |
|
3E |
MVI A, E5h |
КО1 MASTER |
|
081B |
|
E5 |
|
|
|
081C |
|
D3 |
OUT 99 |
|
|
081D |
|
99 |
|
|
|
081E |
|
3E |
MVI A, FFh |
КO1 SLAVE |
|
081F |
|
FF |
|
|
|
0820 |
|
D3 |
OUT 9D |
|
|
0821 |
|
9D |
|
|
|
0822 |
|
3E |
MVI A, C2h |
КО2д |
|
0823 |
|
C2 |
|
|
|
0824 |
|
D3 |
OUT 98 |
|
|
0825 |
|
98 |
|
|
|
0826 |
|
FB |
EI |
Разрешение прерываний |
|
0827 |
M2 |
11 |
LXI D, 08D7 |
Инициализация указателя 1 на массив букв |
|
0828 |
|
D7 |
|
|
|
0829 |
|
08 |
|
|
|
082A |
|
21 |
LXI H, 0BFA |
Инициализация указателя 2 на ячейки 0ВFA-0BFF |
|
082B |
|
FA |
|
|
|
082C |
|
0B |
|
|
|
082D |
M1 |
1A |
LDAX D |
Перенос содержимого массива в аккумулятор |
|
082E |
|
77 |
MOV M, A |
Перенос содержимого аккумулятора в ячейку по второму указателю |
|
082F |
|
13 |
INX D |
Инкремент указателя 1 |
|
0830 |
|
2C |
INR L |
Инкремент указателя 2 |
|
0831 |
|
C2 |
JNZ M1 |
Проверка адреса указателя 2 |
|
0832 |
|
2D |
|
|
|
0833 |
|
08 |
|
|
|
0834 |
|
CD |
CALL 01C8 |
Вывод слова на индикаторы |
|
0835 |
|
C8 |
|
|
|
0836 |
|
01 |
|
|
|
0837 |
|
C3 |
JMP M2 |
Переход по указанному адресу |
|
0838 |
|
27 |
|
|
|
0839 |
|
08 |
|
|
|
083A |
|
|
|
|
|
083B |
|
|
|
|
|
083C |
|
|
|
|
|
083D |
|
|
|
|
|
083E |
|
|
|
|
|
083F |
|
|
|
|
|
0840 |
|
Начало таблицы векторов (НТВ) |
IRQ0
|
|
|
0841 |
|
|
|
|
|
0842 |
|
|
|
|
|
0843 |
|
|
|
|
|
0844 |
|
C3 |
JMP M3 |
IRQ1 вывод НОЧЬ |
|
0845 |
|
60 |
|
|
|
0846 |
|
08 |
|
|
|
0847 |
|
|
|
|
|
0848 |
|
|
|
IRQ2 |
|
0849 |
|
|
|
|
|
084A |
|
|
|
|
|
084B |
|
|
|
|
|
084C |
|
C3 |
JMP M6 |
IRQ3 вывод БЕРЕГ |
|
084D |
|
85 |
|
|
|
084E |
|
08 |
|
|
|
084F |
|
|
|
|
|
0850 |
|
C3 |
JMP M9 |
IRQ4 вывод НЕБО |
|
0851 |
|
AE |
|
|
|
0852 |
|
08 |
|
|
|
0853 |
|
|
|
|
|
0854 |
|
|
|
IRQ5 |
|
0855 |
|
|
|
|
|
0856 |
|
|
|
|
|
0857 |
|
|
|
|
|
0858 |
|
|
|
IRQ6 |
|
0859 |
|
|
|
|
|
085A |
|
|
|
|
|
085B |
|
|
|
|
|
085C |
|
|
|
IRQ7 |
|
085D |
|
|
|
|
|
085E |
|
|
|
|
|
085F |
|
|
|
|
|
0860 |
M3 |
FB |
EI |
Разрешение прерываний |
|
0861 |
|
F5 |
PUSH PSW |
Сохранение текущей информации в стек |
|
0862 |
|
C5 |
PUSH B |
|
|
0863 |
|
D5 |
PUSH D |
|
|
0864 |
|
E5 |
PUSH H |
|
|
0865 |
|
0E |
MVI C, F0 |
Инициализация счетчика |
|
0866 |
|
F0 |
|
|
|
0867 |
M5 |
11 |
LXI D, 08DD |
Инициализация указателя на массив букв |
|
0868 |
|
DD |
|
|
|
0869 |
|
08 |
|
|
|
086A |
|
21 |
LXI H, 0BFA |
Инициализация указателя на ячейки 0ВFA-0BFF |
|
086B |
|
FA |
|
|
|
086C |
|
0B |
|
|
|
086D |
M4 |
1A |
LDAX D |
Перенос содержимого массива в аккумулятор |
|
086E |
|
77 |
MOV M, A |
Перенос содержимого аккумулятора в ячейку по второму указателю |
|
086F |
|
13 |
INX D |
Инкремент указателя 1 |
|
0870 |
|
2C |
INR L |
Инкремент указателя 2 |
|
0871 |
|
C2 |
JNZ M4 |
Проверка адреса указателя 2 |
|
0872 |
|
6D |
|
|
|
0873 |
|
08 |
|
|
|
0874 |
|
CD |
CALL 01C8 |
Вывод |
|
0875 |
|
C8 |
|
|
|
0876 |
|
01 |
|
|
|
0877 |
|
0D |
DCR C |
Декремент счетчика |
|
0878 |
|
C2 |
JNZ M5 |
Проверка счетчика |
|
0879 |
|
67 |
|
|
|
087A |
|
08 |
|
|
|
087B |
|
3E |
MVI A, 20 |
КО2a |
|
087C |
|
20 |
|
|
|
087D |
|
D3 |
OUT 98 |
|
|
087E |
|
98 |
|
|
|
087F |
|
E1 |
POP H |
Извлечение информации из стека |
|
0880 |
|
D1 |
POP D |
|
|
0881 |
|
C1 |
POP B |
|
|
0882 |
|
F1 |
POP PSW |
|
|
0883 |
|
C9 |
RET |
Возврат |
|
0884 |
|
|
|
|
|
0885 |
M6 |
FB |
EI |
Разрешение прерываний |
|
0886 |
|
F5 |
PUSH PSW |
Сохранение текущей информации в стек |
|
0887 |
|
C5 |
PUSH B |
|
|
0888 |
|
D5 |
PUSH D |
|
|
0889 |
|
E5 |
PUSH H |
|
|
088A |
|
0E |
MVI C, F0 |
Инициализация счетчика |
|
088B |
|
F0 |
|
|
|
088C |
M8 |
11 |
LXI D, 08E3 |
Инициализация указателя на массив букв |
|
088D |
|
E3 |
|
|
|
088E |
|
08 |
|
|
|
088F |
|
21 |
LXI H, 0BFA |
Инициализация указателя на ячейки 0ВFA-0BFF |
|
0890 |
|
FA |
|
|
|
0891 |
|
0B |
|
|
|
0892 |
M7 |
1A |
LDAX D |
Перенос содержимого массива в аккумулятор |
|
0893 |
|
77 |
MOV M, A |
Перенос содержимого аккумулятора в ячейку по второму указателю |
|
0894 |
|
13 |
INX D |
Инкремент указателя 1 |
|
0895 |
|
2C |
INR L |
Инкремент указателя 2 |
|
0896 |
|
C2 |
JNZ M7 |
Проверка адреса указателя 2 |
|
0897 |
|
92 |
|
|
|
0898 |
|
08 |
|
|
|
0899 |
|
CD |
CALL 01C8 |
Вывод |
|
089A |
|
C8 |
|
|
|
089B |
|
01 |
|
|
|
089C |
|
0D |
DCR C |
Декремент счетчика |
|
089D |
|
C2 |
JNZ M8 |
Проверка счетчика |
|
089E |
|
8C |
|
|
|
089F |
|
08 |
|
|
|
08A0 |
|
3E |
MVI A, 00 |
Обнуление триггера |
|
08A1 |
|
00 |
|
|
|
08A2 |
|
D3 |
OUT B1 |
|
|
08A3 |
|
B1 |
|
|
|
08A4 |
|
3E |
MVI A, 20 |
КО2а |
|
08A5 |
|
20 |
|
|
|
08A6 |
|
D3 |
OUT 98 |
|
|
08A7 |
|
98 |
|
|
|
08A8 |
|
E1 |
POP H |
Извлечение информации из стека
|
|
08A9 |
|
D1 |
POP D |
|
|
08AA |
|
C1 |
POP B |
|
|
08AB |
|
F1 |
POP PSW |
|
|
08AC |
|
C9 |
RET |
Возврат |
|
08AD |
|
|
|
|
|
08AE |
M9 |
FB |
EI |
Разрешение прерываний |
|
08AF |
|
F5 |
PUSH PSW |
Сохранение текущей информации в стек |
|
08B0 |
|
C5 |
PUSH B |
|
|
08B1 |
|
D5 |
PUSH D |
|
|
08B2 |
|
E5 |
PUSH H |
|
|
08B3 |
|
0E |
MVI C, F0 |
Инициализация счетчика |
|
08B4 |
|
F0 |
|
|
|
08B5 |
M11 |
11 |
LXI D, 08E9 |
Инициализация указателя на массив букв |
|
08B6 |
|
E9 |
|
|
|
08B7 |
|
08 |
|
|
|
08B8 |
|
21 |
LXI H, 0BFA |
Инициализация указателя на ячейки 0ВFA-0BFF |
|
08B9 |
|
FA |
|
|
|
08BA |
|
0B |
|
|
|
08BB |
M10 |
1A |
LDAX D |
Перенос содержимого массива в аккумулятор |
|
08BC |
|
77 |
MOV M, A |
Перенос содержимого аккумулятора в ячейку по второму указателю |
|
08BD |
|
13 |
INX D |
Инкремент указателя 1 |
|
08BE |
|
2C |
INR L |
Инкремент указателя 2 |
|
08BF |
|
C2 |
JNZ M10 |
Проверка адреса указателя 2 |
|
08C0 |
|
BB |
|
|
|
08C1 |
|
08 |
|
|
|
08C2 |
|
CD |
CALL 01C8 |
Вывод |
|
08C3 |
|
C8 |
|
|
|
08C4 |
|
01 |
|
|
|
08C5 |
|
0D |
DCR C |
Декремент счетчика |
|
08C6 |
|
C2 |
JNZ M11 |
Проверка счетчика |
|
08C7 |
|
B5 |
|
|
|
08C8 |
|
08 |
|
|
|
08C9 |
|
3E |
MVI A, 00 |
Обнуление триггера |
|
08CA |
|
00 |
|
|
|
08CB |
|
D3 |
OUT B2 |
|
|
08CC |
|
B2 |
|
|
|
08CD |
|
3E |
MVI A, 20 |
КО2а |
|
08CE |
|
20 |
|
|
|
08CF |
|
D3 |
OUT 98 |
|
|
08D0 |
|
98 |
|
|
|
08D1 |
|
E1 |
POP H |
Извлечение информации из стека
|
|
08D2 |
|
D1 |
POP D |
|
|
08D3 |
|
C1 |
POP B |
|
|
08D4 |
|
F1 |
POP PSW |
|
|
08D5 |
|
C9 |
RET |
Возврат |
|
08D6 |
|
|
|
|
|
08D7 |
|
00 |
|
|
|
08D8 |
|
3F |
|
О |
|
08D9 |
|
73 |
|
Р |
|
08DA |
|
79 |
|
Е |
|
08DB |
|
4F |
|
З |
|
08DC |
|
3F |
|
О |
|
08DD |
|
00 |
|
|
|
08DE |
|
00 |
|
|
|
08DF |
|
7C |
|
Ь |
|
08E0 |
|
66 |
|
Ч |
|
08E1 |
|
3F |
|
О |
|
08E2 |
|
76 |
|
Н |
|
08E3 |
|
00 |
|
|
|
08E4 |
|
31 |
|
Г |
|
08E5 |
|
79 |
|
Е |
|
08E6 |
|
73 |
|
Р |
|
08E7 |
|
79 |
|
Е |
|
08E8 |
|
7D |
|
Б |
|
08E9 |
|
00 |
|
|
|
08EA |
|
00 |
|
|
|
08EB |
|
3F |
|
О |
|
08EC |
|
7D |
|
Б |
|
08ED |
|
79 |
|
Е |
|
08EE |
|
76 |
|
Н |
Вывод: проделав данную лабораторную работу, мы изучили особенности функционирования КПР, научились его программировать, организовывать прерывания, а так же закрепили знание команд на языке Assembler.
