p align="justify"> JNE M2; передача управління на команду з міткою М2, якщо ZF=0
JC M3; передача управління на команду з міткою М3, якщо CF=1
JNC M4; передача управління на команду з міткою М4, якщо CF=0
ADD AX, BX
JC M
Якщо в результаті складання CF=1, то управління передається на команду з міткою М, інакше - на команду, наступну за JC.
AX, BX
JZ Met
Якщо результатом віднімання буде 0, то ZF=1 і управління передається на команду з міткою Мet.
Часто команди передачі управління використовуються після команд порівняння <ім'я> CMP OP1, OP2; <Коментар>
За цією командою виконується (OP1) - (OP2) і результат нікуди не надсилається, формуються лише прапори. Команди умовної передачі управління для беззнакових і знакових чисел можна представити у вигляді таблиці:
условіеДля беззнакових чіселДля знакових чисел> JAJG=JEJE =JAEJGE < =JBEJLE < > JNEJNE
Команди умовної передачі управління можуть здійснювати тільки короткий перехід, а команди Бузусловно передачі управління можуть реалізувати як коротку передачу так і довгу. Якщо необхідно здійснити умовний дальній перехід, то можна використовувати одну з команд умовної передачі разом з командою умовної передачі, наприклад так:
if AX=BX goto m слід замінити на:
if AX < > BX goto L
Goto m; m - далека мітка
--------------------
L: -----------------; L - близька мітка
На Асемблері це буде так:
cmp AX, BXLm
----------------------
L: --------------------
За допомогою команд jx і jmp можна реалізувати цикл з передумовою 1) і з постусловіем 2):
Команди для організації циклів
1) loop <мітка>
2) loope < мітка> == Loopz < мітка>
3) Loopne < мітка> == Loopnz < мітка>
За командою у формі 1): (CX)=(CX) - 1 і якщо (CX) < > 0, управління передається на команду з вказаною міткою.
За командою у формі 2): (CX)=(CX) - 1 і якщо (CX) < > 0 і одночасно ZF=1, управління передається на команду з вказаною міткою, тобто цикл завершується, якщо або (CX)=0 або ZF=0 або (CX)=(ZF)=0
За командою у формі 3): (CX)=(CX) - 1 і якщо (CX) < > 0 і одночасно ZF=0, управління передається на команду з вказаною міткою, тобто вихід з циклу существляется, якщо або (CX)=0 або ZF=1 або одночасно (CX)=0 і (ZF)=1.
Отже, кількість повторень циклу повинно зберігатися в регістрі CX.
Якщо CX потрібно використовувати всередині циклу, то зміст циклу має починатися командою збереження в стеці вмісту регістра CX, а перед командою loop необхідно регістр CX відновити. А для індексації, наприклад, елементів масиву всередині циклу можна використовувати індексний регістр:
Приклад використання команд умовного переходу, порівняння і цик...