Программирование в двоичных кодах
|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
| | скачать работу |
Программирование в двоичных кодах |