PICのアセンブリコードの解析をしているのですが、
あまりに読み辛いので、マクロを使って書き換えてみました。
使ったマクロはこんな感じ。
バンク切り替えは良いとして、
特に、比較の時に一々XORするのが分かりづらいのと、
MOVが色々有りすぎて、パッと分からないからです。
目的の動作を何段階かに分けて書かないといけないのです。
つまりこれは、PICがRISCで、本来コンパイラが吐きやすいニーモニックになっているからです。
人間が書くためのニーモニックになっていないのです。
人間が書くことを前提とすれば、
なんでもかんでもMOVにせず、
MOVLW L は LDA #L
MOVWF F は STA F
とすべきなんです。
従って、アセンブリコードの教材としてPICを使うのはどうかなと思うわけです。
ただ、実際の学生に教えたことがあるので、
(この時は既にPICを使うことが決まっていました)
壊れても良いように、安価なPICを使うのも、分からないではないです。
それに、今時のマイコンはAVRにしてもニーモニックは
似たり寄ったりなので、しょうがないかなとも思います。
あまりに読み辛いので、マクロを使って書き換えてみました。
使ったマクロはこんな感じ。
SET_BANK0 MACRO BCF STATUS,RP0 ;BANK 0 BCF STATUS,RP1 ENDM SET_BANK1 MACRO BSF STATUS, RP0 ;BANK 1 BCF STATUS, RP1 ENDM SET_BANK2 MACRO BCF STATUS, RP0 ;BAMK 2 BSF STATUS, RP1 ENDM SET_BANK3 MACRO BSF STATUS, RP0 ;BAMK 3 BSF STATUS, RP1 ENDM CMPFL MACRO FILE,L ;COMPARE F,L MOVF FILE,W XORLW L ENDM CMPFF MACRO FILE1,FILE2 ;COMPARE F1,F2 MOVF FILE1,W XORWF FILE2,W ENDM MOVLF MACRO L,FILE ;MOVE L -> F MOVLW L MOVWF FILE ENDM MOVFF MACRO FILE1,FILE2 ;MOVE F -> F MOVF FILE1,W MOVWF FILE2 ENDM
バンク切り替えは良いとして、
特に、比較の時に一々XORするのが分かりづらいのと、
MOVが色々有りすぎて、パッと分からないからです。
目的の動作を何段階かに分けて書かないといけないのです。
つまりこれは、PICがRISCで、本来コンパイラが吐きやすいニーモニックになっているからです。
人間が書くためのニーモニックになっていないのです。
人間が書くことを前提とすれば、
なんでもかんでもMOVにせず、
MOVLW L は LDA #L
MOVWF F は STA F
とすべきなんです。
従って、アセンブリコードの教材としてPICを使うのはどうかなと思うわけです。
ただ、実際の学生に教えたことがあるので、
(この時は既にPICを使うことが決まっていました)
壊れても良いように、安価なPICを使うのも、分からないではないです。
それに、今時のマイコンはAVRにしてもニーモニックは
似たり寄ったりなので、しょうがないかなとも思います。
※コメント投稿者のブログIDはブログ作成者のみに通知されます