~1 (Программирование в двоичных кодах), страница 2
Описание файла
Документ из архива "Программирование в двоичных кодах", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "~1"
Текст 2 страницы из документа "~1"
Обнуление области памяти. Программа пересылает нулевое содержимое какого либо регистра в ячейку памяти.
Адреса | Команды | Мнемоника команд | Комментарий |
000 | 227 | SUB A | Обнуление А |
001 | 041 | LXI H | |
002 | 011 | B2 | |
003 | 000 | B3 | |
004 | 167 | MOV M,A | Обнуление ячейки памяти по адресу HL |
005 | 043 | INX H | Адрес следующей ячейки |
006 | 303 | JMP | Безусловный переход по адресу |
007 | 004 | B2 | мл.байт |
010 | 000 | B3 | ст.байт |
Содержимое ячеек до выполнения программы:
Адрес | Содержимое |
011 | Xxx |
... | Xxx |
040 | Xxx |
Содержимое ячеек после выполнения программы:
Адрес | Содержимое |
011 | 000 |
... | 000 |
040 | 000 |
Программа №7
Режим задания команд с клавиатуры
Адреса | Команды | Мнемоника команд |
100 200 | 166 | HLT |
Задание с клавиатуры
Команды | Мнемоника команд |
303 | JMP |
200 | B2 |
100 | B3 |
Программа №8
Условные переходы. Программа позволяет изучить действие условных переходов. По адресу H=000,L=200 запишем число 002(соответствует нулевому значению всех флагов в регистре признаков), а по адресу H=000,L=004 – число 302(код команды условного перехода по ненулевому результату JNZ).
Адреса | Команды | Мнемоника команд | Комментарии |
000 | 061 | LXI SP | |
001 | 200 | B2 | |
002 | 000 | B3 | |
003 | 361 | POP PSW | Извлечение из стека ССП |
004 | * | * | (JNZ,JZ,JNC,JC,JPO,JPE,JP,JM) |
005 | 000 | B2 | |
006 | 000 | B3 | |
007 | 166 | HLT | |
200 | ** | - | |
201 | 000 | - |
Варианты выполнения программы
Признак | Данные по адресу 004 | Данные по адресу 200 | Переход к адресу 000 |
302 (JNZ) | 002 (z=0) | Есть | |
ноль | 302 (JNZ) | 102 (z=1) | Нет |
312 (JZ) | 102 (z=1) | Есть | |
322 (JNC) | 002 (c=0) | Есть | |
перенос | 322 (JNC) | 003 (c=1) | Нет |
332 (JC) | 003 (c=1) | Есть | |
342 (JPO) | 002 (p=0) | Есть | |
Четность | 342 (JPO) | 006 (p=1) | Нет |
352 (JPE) | 006 (p=1) | Есть | |
362 (JP) | 002 (s=0) | Есть | |
Знак | 362 (JP) | 202 (s=1) | Нет |
372 (JM) | 202 (s=1) | Есть |
Программа №12
Выбор максимального элемента массива.
Адрес | Команда | Мнемоника команды | Комментарий |
000 | 041 | LXI H | |
001 | 100 | B1 | |
002 | 000 | B2 | |
003 | 016 | MVI C | Загрузка переменной цикла |
004 | 005 | B2 | |
005 | 176 | MOV A,M | Загрузка в А первого элемента |
006 | 043 | INX H | Переход к следующему элементу |
007 | 276 | CMP M | Если А>М С=0 А<М С=1 |
010 | 332 | JC | Если А<М меняем местами |
011 | 014 | B2 | |
012 | 000 | B3 | |
013 | 176 | MOV A,M | Перенос в А нового максимума |
014 | 015 | DCR C | Уменьшение переменной цикла |
015 | 302 | JNZ | Если переменная цикла не равна 0 то все сначала |
016 | 006 | B2 | |
017 | 000 | B3 | |
020 | 062 | STA | Сохранение результата в памяти |
021 | 150 | B2 | |
022 | 000 | B3 | |
023 | 166 | HLT | Конец |
2.Выполнение индивидуальных заданий
Программа №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 и принципы проектирования и отладки микроконтроллеров на основе МП. Программирование в машинных кодах позволяет прозрачно представить структуру МП и программного обеспечения.