Используются при реализации ветвлений в алгоритмах.
В основном большинстве используются после команд CMP (команда сравнения двух операндов),ADD,SUB. Команда CMP производит вычитание операнда-источника из операнда-приемника и, в зависимости от результата, изменяет флаги, но в отличие от команды SUB команда CMP не сохраняет результат вычитания.
Напоминаем формат команды CMP :
CMP <что сравниваем – источник>,<с чем сравниваем – источник>
Команды условного перехода всегда имеют атрибут NEAR. Т.к. метка является 8-битным смещением относительно текущего состояния указателя команд IP, поэтому команды могут выполнить переход только на 127 байт вперед или на 128 байт назад.
Формат команды :J<условие> <метка>
Команда осуществляет переход если выполнено условие,закодированое в мнемонике команды, иначе – переход на слеующую за командой перехода команду.
Применяемые условия можно разделить на 2 группы:
1)Флаги и их отрицания: S , NS , C , NC , Z , NZ , O , NO , P , NP. Символ N – сокращение от слова not (отрицание).
2)Результаты сравнения двух операндов, выраженые через мнемокоды, приведеные в табл. 4. Причем для чисел без знака и со знаком используются различные мнемокоды.
| Табл.4.
|
| Результат сравнения: операнд1 и операнд2
| Мнемокод для чисел
|
| без знака
| со знаком
|
| Равны
| E
| E
|
| Больше
| A
| G
|
| Меньше
| B
| L
|
| Не равны
| NE
(AB)
| NE
(LG)
|
| Не больше
| NA
(EB)
| NG
(EL)
|
| Не меньше
| NB
(EA)
| NL
(EG)
|
Выполнение команды условного перехода дано на рис.21. Здесь J** – одна из команд условного перехода, а ** - условие перехода.
Команды передачи управления на регистр флагов не влияют.
