20180629_05 繰り返し(ループ)処理の実現 制御命令とビットテスト命令とを組み合わせて使用する。 ビットテスト命令 BTFSC命令、BTFSS命令 (例) BTFSS 30H,4 ファイルレジスタ30H番地の(0から数えて)4ビット目が1であったら(setされていたら)、 つぎの命令(つぎのプログラムメモリアドレスに置かれた命令)を、ひとつ飛ばし(skip)する。 (別の例) BTFSS STATUS,Z ステータスレジスタ(専用レジスタのひとつ、05H番地)のZビット(bit2)が1であったら、 つぎの命令(つぎのプログラムメモリアドレスに置かれた命令)を、ひとつ飛ばし(skip)する。 Zビットは、直前の命令の実行結果が0(zero)であったときに(1に)セットされる。Zフラグともいう。  (注意)STATUSやZは、別のファイル(P16F877.INC等)で定義されている定数の名前である。 プログラムの先頭で、INCLUDE擬似命令を用いて、このファイルの内容を取り込むようにする。 INCLUDE P16F877.INC (プログラム例) COUNT: EQU 20H SUM: EQU 21H ORG 0 CLRF SUM ; SUM <- 0 CLRF COUNT ; COUNT <- 0 LOOP: MOVF COUNT,W ; W <- COUNT ADDWF SUM,F ; SUM <- SUM + W INCF COUNT ; COUNT <- COUNT + 1 MOVLW 0AH ; W <- 10 SUBWF COUNT,W ; W <- COUNT - W BTFSS STATUS,Z ; STATUSのZフラグが1ならば(COUNT==10ならば)、つぎの命令をスキップする GOTO LOOP ; (STATUSのZフラグが0、つまりCOUNT<10ならば、)LOOPへ飛ぶ(LOOPから繰返す) GOTO $ ; $は、この命令が置かれたアドレス、つまり自分自身へ飛ぶ(無限ループ) END ; このプログラムは、 ; 変数COUNTの値を0から10まで1つずつ増加させながら(INCF命令を使用)、 ; 変数SUMへCOUNTの値を加えることを繰返して、 ; 変数SUMに0から10までの整数の和を求めている。 ; 繰り返しの終了については、 ; COUNTの値が10になったかどうかを、 ; 減算命令(SUBWF)とビットテスト命令(BTSS)とで検査している。 ; 最後は、自分自身へ飛ぶ無限ループにして、プログラムの実行終了の代わりにしている。 (参考) skip命令(BTFSC命令、BTFSS命令、DECFSZ命令、INCFSZ命令)は、 条件によって、つぎに置かれた命令をひとつ飛ばし(skip)する制御命令の一種である。