←前ページへ :  INDEX :  次へ→


4-3.条件分岐 ( Jump Conditionally )

  さて、前のページでも書いたように、アセンブラでの条件分岐は基本的にフラグによって行われる。したがって、高級言語のように「○○かつ××」とか、「○○または××」といったような複合条件での分岐はできない。かならずひとつずつ条件を指定しなければならず、複数の条件の場合は、1つの条件を組み合わせなければならない。

  まず、基本でない(フラグによる条件でない)条件分岐を見てみる。 なぜ基本でないものからかというと、簡単で命令数がすくないからである。

JCXZ ( Jump if CX is Zero ) :CXが0ならば分岐

JECXZ ( Jump if ECX is Zero ) :ECXが0ならば分岐

JCXZ	DEST
   動作:CXレジスタが0ならばジャンプする

JECXZ	DEST   (80386以降)
   動作:ECXレジスタが0ならばジャンプする
 

条件分岐では、前ページの「無条件分岐」で説明した、「short」と「near」がある。ただし、「near」は80386以降で追加され、80286以前の CPUでは「short」のみである。ただし、DESTは即値(ラベル)のみしか使用できない。これは今後出てくる条件分岐命令すべてにあてはまる。

  さて、この「JCXZ」「JECXZ」の用途であるが、まぁ、機能が機能だけに、きちんと動けば別にどんな用途に用いても良いわけだが、 「LOOP」命令と併せて用いるのが一般的である。「LOOP」命令とは、 CX回またはECX回処理を繰り返す命令であるが、CX=0の時は65536回(ECX=0の時は232回) 繰り返してしまう。これを回避するために用いるのが一般的である。

  
その他の「条件分岐」は こちら


←前ページへ :  INDEX :  次へ→