安全・環境活動に役立つLEDイルミネーションの製作 Q&A
008. 2つの値の大小を比較するには?
減算命令「SUBWF」を利用して差をとり、「STATUS(ステータス)レジスタ」のCフラグ、Zフラグで正負、ゼロを調べます。以下に例を示します。
※UA, UBはユーザエリアに確保され、値(符号なし0〜255)が入っているものとします。
COMP01 MOVWF UA ;UAの値をWレジスタに格納(W=UA) SUBWF UB,0 ;減算UB-W (UB-UA)の結果をWレジスタに格納し、正負,ゼロの状態をSTATUSレジスタにセット BTFSC STATUS,0 ;STATUSレジスタのCフラグ(ビット0)を調べ、クリア(0)ならば次の命令をスキップ GOTO PULUS ;PULUSへジャンプ(UB-UA=0またはUB-UA>0のとき、Cフラグは1となりスキップされない) MINUS ; ( UB - UA < 0 の処理を行う ) GOTO COMP0E PULUS BTFSC STATUS,2 ;STATUSレジスタのZフラグ(ビット2)を調べ、クリア(0)ならば次の命令をスキップ GOTO ZERO ;ZEROへジャンプ(Zフラグは1となり、スキップされない) ; ( UB - UA > 0 の処理を行う ) GOTO COMP0E ZERO ; ( UB - UA = 0 の処理を行う ) COMP0E
Last Up Date: 2009/1/13