Page 40 - 4989
P. 40
переходу в такій конструкції слід перевіряти умову, протилежну
до тієї, при якій виконується блок <команди>.
Приклад.
Якщо число в регістрі ЕАХ не дорівнює 10, то додати до
нього 1.
CMP EAX, 10
JE M1
INC EAX
M1:
У цьому коді команда інкременту ЕАХ виконається, якщо
ЕАХ не дорівнює 10, а якщо дорівнює, то буде виконаний перехід
на мітку М1 і ніяких дій виконано не буде.
Аналог конструкції з блоком else виглядає так:
Jcc <мітка1>
<команди1>
JMP <мітка2>
<мітка1>:
<команди2>
<мітка2>:
Тут <команди1> виконуються, якщо НЕ виконується умова,
задана командою Jcc, а <команди2> - якщо ця умова виконується.
Команда JMP необхідна тут для того, щоб уникнути виконання
блоку <команди2> у випадку, коли умова виконується.
Приклад.
Якщо беззнакове число в регістрі ЕАХ менше за 100, то
додати до нього 10, інакше відняти від нього 10.
CMP EAX, 100
JB less_than_100
SUB EAX, 10
JMP done_all
less_than_100:
ADD EAX, 10
done_all:
40