←前ページへ :  INDEX :  練習問題へ→


5-6.TEST命令 ( Logical Compare ) :論理的比較

   TEST命令は「論理積( Logical product )」を表す。すなわち「AND」命令と同じである。何が違うかというと、下に示したようにDESTがなく、結果は保持されないことである。では何が変化するかというと、フラグである。2つのオペランドの論理積をとり、そのフラグだけ反映する命令である。

TEST ( Logical Compare ) :論理的比較

 
TEST	SRC1,SRC2

  動作: SRC1 and SRC2 のフラグのみ反映
  影響を受けるフラグ:OF=0,CF=0,ZF,SF,PF,AF
    SRC1:レジスタ、メモリー
    SRC2:レジスタ、メモリー、即値(ただしメモリー、メモリーの組み合わせは除く)



用途
・ビットの検査
あるビットが1ならばジャンプする例
	 :
	 :
	test	al,00011000b
	jnz	XXX45:		;ALの4,5bitがともに1ならジャンプ
	test	al,00000001b
	jnz	XXX01;		;ALの下位1bitが1ならジャンプ
	 :

論理的比較 【86】
【書式】
 TEST  dest,source
 dest   = reg/mem   source = reg/mem/imm
【フラグ】
OF DF IF TF SF ZF ?? AF ?? PF ?? CF
【動作】
destsource の論理積をとり、結果に従ってフラグを設定します。
dest AND source
【備考】
  • 結果が格納されないことを除き、AND命令と動作は同じです。
【用例】
 

 

TEST  [FLAG],00001111B ;
下位4ビットのどれかがONか検査
JNZ   ANYON            ;
何れかがONで分岐
;
TEST  [FLAG],00000001B ;
最下位ビットがONか検査
JNZ   LOWER            ;
最下位ビットがONで分岐

←前ページへ :  INDEX :  練習問題へ→