• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PIC(MOVFで何故、STATUS Zフラグが変わるのか))

PICマイコンでの割り込み時のMOVFの影響について知りたい

このQ&Aのポイント
  • PICマイコンで割り込みを行う際、MOVF命令がSTATUSのZフラグに影響を与えるため、使用しないようにされています。しかし、MOVFがZフラグにどのような影響を与えるのかは分かりません。
  • 割り込みを使用しない場合でも、条件判断にSTATUSのZフラグを使用している限り、MOVF命令は使用できないのでしょうか。
  • 一部の書籍では割り込み処理の一部で、MOVF命令を使用してSTATUSのコピーを行っていますが、この方法は問題ないのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

こんばんわ。 >何故、MOVFでZフラグに影響を与えるのか、どういう影響を与えるのか分かりません。 MOVFでZフラグに影響が出るのは、PICの設計の思想の問題なのですが、とりあえず影響を与えると受け入れるしかありません。 割り込みは、いつ発生するか分りませんので全てのフラグとレジスタに影響を与えては行けません。割り込み開始時と同じ状況に復元して割り込み処理を終了する必要があります。 >割り込みを使わなくても、STATUS<Z>を条件判断に使っている限り、MOVFは使えないのでしょうか。 条件分岐とかで判断する前にMOVFを使うとZフラグ変わってしまいます。 以下の割り込みの開始処理の解説してみます。 MOVWF W_TEMP   ;WレジスタをW_TEMPに退避。 MOVF STATUS,W ;STATUSレジスタをWレジスタへ。 MOVWF ST_TEMP ;STATUSレジスタをST_TEMPに退避。 で、この時のMOVFが問題ないのかって事だと思うのですが。 MOVFでZフラグが変化するのは移動後なんです。つまりレジスタの中身を移し変えた後で変化します。 なので、 MOVF STATUS,W とすると元のSTATUSレジスタの内容がwレジスタに移されます。 その後にZフラグが変化しますが、wレジスタにあるSTATUSレジスタの内容はMOVF前のままって事になります。 えーと、分っていただけましたか? 分らなかったら、また補足などで質問してください。

rheda
質問者

お礼

回答ありがとうございます!! 大分、得した気分です。 MOVFでZが変わる理由がないこと(あっても 非常に本質的で難解なこと)。 MOVFで回避するのが先だから、 MOVF STATUS,Wが成り立つこと (割り込みの最後は、 MOVWF STATUSで、STATUSを 戻しているので、MOVFが使えず、 SWAPFを使っていること)。 割り込み以外でもMOVFは問題と なるが、通常は、STATUSのZを チェックする 直前で、計算を実行しているので、 MOVFの入る余地がないこと。 すべて、解決しました。 本当にありがとうございました。

関連するQ&A