Смекни!
smekni.com

Программирование в двоичных кодах (стр. 3 из 3)

Программа №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 и принципы проектирования и отладки микроконтроллеров на основе МП. Программирование в машинных кодах позволяет прозрачно представить структуру МП и программного обеспечения.