PIC16のアセンブラ、あなたならどう書く?
PIC16のアセンブラ、あなたならどう書く?
こんにちは、PIC16シリーズのアセンブラについての質問です。MPASMのプログラム書き始めて3日ぐらい目です。すこしずつ、インストラクション・セットやアーキテクチャを把握してきた感じです。
C言語調で書きました下記の様なIF-ELSEをMPASMで書きたい時、皆さんならどの様に記述されますか?人に見られる可能性のあるコードですので、ちびっとぐらいは格好つけないといけない状態です(汗)。
//===== Increase var0/1 =====
if( sel == 0x00 ) {
var0 ++;
var1 = 0;
} else {
var1++;
var0 = 0;
}
下記は、自分なりのコードとそのコメントに当たります。
;===== Increase var 0/1 =====
MOVF sel, W ; Switch by sel
BTFSS STATUS, Z ; ..
GOTO $+4 ; ..
INCF var0 ; Case sel==0, var0++
CLRF var1 ; var1=0
GOTO $+3 ;
INCF var1 ; Case sel!=0, val1=++
CLRF var0 ; val0++
NOP ; Switch-close
もちろん、記述方法は記述者の好みがありますから、良し悪しではなく参考的な回答だと嬉しいです。こういう方が常識的だとか、こう記述すると後で見やすいとか、好き嫌いでもかまいません。よかったらご意見ください。よろしくお願いいたします。
お礼
大変、参考になりました。 どうもありがとうございます。