Программа №1
Адрес | Команды | Мнемоника команды | Комментарии |
000 | 016 | MVI C | Число прохождений внешнего цикла 15-1=14=16(8) |
001 | 016 | B2 | |
002 | 041 | LXI H | Загрузка адреса первого элемента массива |
003 | 100 | B2 | |
004 | 000 | B3 | |
005 | 026 | MVI D | Число сравнений внутри главного цикла |
006 | 016 | B2 | |
007 | 106 | MOV B,M | Сохр. Первый из сравниваемых элементов в B |
010 | 043 | INX H | Формирование адреса второго ср-ого элемента |
011 | 176 | MOV A,M | Сохранение второго элемента в аккумуляторе |
012 | 270 | CMP B | Сравнение аккумулятора с регистром B.A>B => флаг C=0 и наоборот |
013 | 322 | JNC | Если C=1, то элементы расположены по возрастанию и выполнять перемену их местами не нужно(ком 016-021) |
014 | 022 | B2 | След. Ячейка |
015 | 000 | B3 | Делитель из памяти в В |
016 | 160 | MOV M,B | Перезапись первого элемента по адресу второго |
017 | 053 | DCX H | Сформировали адрес первого элемента |
020 | 167 | MOV M,A | Сохранили под адресом первого элемента второй |
021 | 043 | INX H | Адрес первого из сравниваемых в следующем цикле |
022 | 025 | DCR D | Уменьшение переменной внутреннего цикла |
023 | 302 | JNZ | Если переменная не равна нулю переход к следующей итерации |
024 | 007 | B2 | |
025 | 000 | B3 | |
026 | 015 | DCR C | Уменьшение переменной внешнего цикла |
027 | 302 | JNZ | Если переменная внешнего цикла не равна нулю то переходим к следующей итерации |
030 | 002 | B2 | |
031 | 000 | B3 | |
032 | 166 | HLT | Конец программы. |
Программа №2.
Вывод с задержкой слов РЕПА И ГЕРБ на панель индикатора.
Адрес | Команда | Мнемоника команд | Комментарии |
000 | 076 | MVI A | Предварительная инициализация ППИ блока статической индикации |
001 | 200 | B2 | |
002 | 323 | OUT port | |
003 | 003 | B2 | |
004 | 323 | OUT port | |
005 | 007 | B2 | |
006 | 004 | INR B | Инициализация стека |
007 | 002 | STAX B | |
010 | 001 | LXI B | |
011 | 220 | B2 | |
012 | 230 | B3 | |
013 | 007 | RLC | |
014 | 006 | MVI B | |
015 | 003 | INX B | |
016 | 041 | LXI H | Загрузка начального адреса в указатель памяти |
017 | 200 | B2 | |
020 | 000 | B3 | |
021 | 176 | MOV A,M | Вывод на блок статической индикации слова РЕПА |
022 | 323 | OUT port | |
023 | 000 | B2 | |
024 | 043 | INX H | |
022 | 176 | MOV A,M | |
023 | 323 | OUT port | |
024 | 001 | B2 | |
025 | 043 | INX H | |
026 | 176 | MOV A,M | |
027 | 323 | OUT port | |
030 | 002 | B2 | |
031 | 043 | INX H | |
032 | 176 | MOV A,M | |
033 | 323 | OUT port | |
034 | 004 | B2 | |
035 | 315 | CALL addr | Вызов подпрограммы |
036 | 153 | B2 | |
037 | 000 | B3 | |
040 | 043 | INX H | Вывод на блок статической индикации слова ГЕРБ |
041 | 176 | MOV A,M | |
042 | 323 | OUT port | |
043 | 000 | B2 | |
044 | 043 | INX H | |
045 | 176 | MOV A,M | |
046 | 323 | OUT port | |
047 | 001 | B2 | |
050 | 043 | INX H | |
051 | 176 | MOV A,M | |
052 | 323 | OUT port | |
053 | 002 | B2 | |
054 | 043 | INX H | |
055 | 176 | MOV A,M | |
056 | 323 | OUT port | |
057 | 004 | B2 | |
060 | 315 | CALL addr | Вызов подпрограммы |
061 | 153 | B2 | |
062 | 000 | B3 | |
063 | 303 | JMP addr | Безусловный переход к команде по адресу, указанному в B2,B3 |
064 | 006 | B2 | |
065 | 000 | B3 |
Подпрограмма, организующая задержку.
Адрес | Команды | Мнемоника команды | Комментарии |
153 | 001 | LXI B | Запись исходных данных в регистры B и C |
154 | 377 | B2 | B2-(C) |
155 | 377 | B3 | B3-(B) |
156 | 005 | DCR B | Уменьшение переменной внутреннего цикла |
157 | 302 | JNZ addr | Если переменная цикла не равна нулю переход к следующей итерации |
160 | 156 | B2 | |
161 | 000 | B3 | |
162 | 015 | DCR C | Уменьшение переменной внешнего цикла |
163 | 302 | JNZ addr | Если переменная цикла не равна нулю переход к следующей итерации |
164 | 156 | B2 | |
165 | 000 | B3 | |
166 | 311 | RET | Безусловный возврат из подпрограммы |
Коды букв для вывода на семи сегментный индикатор
А | 167 |
Б | 175 |
Г | 061 |
Е | 171 |
Р | 163 |
П | 067 |
Выводы.
В ходе выполнения работы были получены навыки программирования МП-систем, система команд процессора комплекта серии К580 и принципы проектирования и отладки микроконтроллеров на основе МП. Программирование в машинных кодах позволяет прозрачно представить структуру МП и программного обеспечения.