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
   35   36   37   38   39   40   41   42   43   44   45