Группа команд передачи управления является самой многочисленной группой. Она содержит 40 инструкций, которые делятся на две подгруппы:
- Команды условных и безусловных переходов (табл.1.7):
- Команды вызова подпрограмм и обслуживания прерываний (табл.1.8).
Центральный процессор CPU08 может использовать три команды безусловного перехода: традиционную трехбайтовую команду JMP и две двухбайтовых команды BRA и BRN. Команда JMP отличается расширенным набором способов задания адреса перехода. Этот адрес может быть, в том числе, определен одним из способов индексной адресации, что позволяет разместить изменяемый в ходе выполнения программы адрес в одной из ячеек ОЗУ. Двухбайтовая команда BRA реализует безусловный переход в пределах смещения -128¸+127 относительно текущего адреса. Эта команда позволяет более экономно расходовать память. Команда BRN аналогична команде NOP, но имеет двухбайтовый формат. Значение смещения, которое указано во втором байте команды, смысла не имеет. Эта команда полезна для режимов отладки программного обеспечения в абсолютном коде. Она позволяет заменить инструкцию ветвления на инструкциюNOP без изменения байта смещения rel в формате команды условного перехода.
Группа команд ветвления чрезвычайно широка. Кроме переходов по традиционным условиям C, Z, N, H, реализованы переходы по комбинациям флагов C и Z для сравнения операндов в прямом коде без знака, а также по комбинациям флагов C, Z, и V для сравнения операндов в дополнительном коде со знаком.
Особое внимание следует обратить на команды CBEQ и DBNZ:
CBEQopr, rel;Сравнить содержимое аккумулятора ACC с содержимым прямоадресуемой
;ячейки памяти и перейти по метке, если они равны.
CBEQx +, rel ;Сравнить содержимое аккумулятора ACC с содержимым ячейки памяти,
; адрес которой содержится в индексном регистре, и перейти по метке, если
; они равны. Содержимоеиндексного регистра H:X увеличивается на 1
;после выполнения сравнения.
DBNZX, rel ;Уменьшить на 1 содержимое ячейки памяти, адрес которой указан в
;индексном регистреH:X, и перейти по метке, если результат не равен 0.
DBNZArel ;Уменьшить на 1 содержимое аккумулятора ACC, и перейти по метке,
;если результат не равен 0.
Команды CBEQ и DBNZ имеют достаточно широкий набор способов адресации.
Табл.1.7. Команды условных и безусловных переходов.
Мнемокод