命令MOVFについて

命令MOVFについて
MOVF の詳細
• movf f,d
• fをdに代入
• fはレジスタ名(レジスタのアドレス)
• dは転送先
• d=1、自分自身
• d=0、ワーキングレジスタ
MOVF d=1の場合
• d=1の場合、転送元のレジスタへ転送される。
なぜ、こんなことをするのか?
演算結果で影響を受けるレジスタがある。(STATUS)
STATUSレジスタには、
直前の演算結果の結果が反映されている。
たとえば、減算演算が0になった場合、Zフラグが立つ。
MOVF CNT1、1
とすることで、レジスタCNT1の内容は変わらないが、副次的効果で
STATUSレジスタのZフラグをクリアすることができる。
MOVF d=0の場合
• d=0 の場合、転送先はワーキングレジスタになる。
• 素直に使う場合、
MOVF CNT1,0
• とすればレジスタCNT1の内容がワーキングレジスタに転送される。
• こっちがまともな使い方と言える。
MOVF f,d
• よって、レジスタf の内容をワーキングレジスタに転送する場合には、以下のよ
うにするべきである。
MOVF レジスタ名(変数名),0
• "p16f84a.inc"に定義されている値を使ってもよい。
W
F
EQU H'0000'
EQU H'0001'
MOVF レジスタ名(変数名),W