Цифровые устройства и микропроцессор. Программирование микроконтроллеров семейства MCS-51. Жаринов О.О. - 18 стр.

UptoLike

Составители: 

18
Команды условных переходов выполняют переход только при спра-
ведливости некоторого условия. Если оно не выполнено, то переход не
состоится и будет исполняться команда, непосредственно следующая за
командой условного перехода. В MCS-51 предусмотрены следующие
условия перехода: состояние бита переноса или любого доступного для
прямой адресации бита; равенство или неравенство содержимого акку-
мулятора нулю; результат сравнения регистра с константой (в частном
случае, с нулем) или значения аккумулятора с содержимым ячейки ОЗУ.
Следует помнить, что при сравнении чисел во всех без исключения ко-
мандах ASM-51 предполагается, что эти числа положительны . е.
десятичный эквивалент числа F8h равен плюс 248, а не минус 8).
В этой группе имеются замечательные инструкции, совершающие
сразу несколько действий в течение своего выполнения: команды CJNE
и DJNZ. Команда CJNE N1,N2,rel сравнивает 2 числа и выполняет пе-
реход, если эти два числа не равны, попутно изменяя состояние бита
переноса. В данном случае на месте параметра N1 может оказаться ак-
кумулятор, РОН или адрес ячейки ОЗУ, указанный в регистре Ri (кос-
венная адресация), а в качестве N2 может фигурировать либо прямой
адрес ячейки ОЗУ, либо константа. При любых сочетаниях типов пара-
метров команда CJNE изменяет бит переноса С следующим образом:
если содержимое элемента N1 меньше содержимого N2, то С=1, а если
наоборот (N1)>(N2), то С=0. Команда DJNZ сначала уменьшает число,
затем сравнивает его с нулем и совершает переход, если получившееся
число не равно нулю. Имеются варианты этой команды с прямой и с
регистровой адресацией: DJNZ ad,rel и DJNZ Rn,rel, соответственно.
Эти команды исключительно удобны для построения циклов с задан-
ным количеством повторений, с уменьшением переменной цикла.
Важно подчеркнуть, что переходы во всех командах условных пере-
ходов относятся к классу «коротких», что иногда вызывает неудобства
при необходимости «перепрыгнуть» фрагмент программы длиной боль-
ше 127 адресов. Для решения этой задачи приходится осуществлять пе-
реход в два этапа: сначала короткий переход на команду «длинного»
безусловного перехода, а уже она, в свою очередь, загружает указатель
команд необходимым числом и передает управление в нужное место.
Другой способ решения проблемы состоит в использовании команд
вызова подпрограмм.
Команды вызова подпрограмм. В отличие от команд переходов, при
переходе на новое место в программе автоматически сохраняют адреса