ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

PICのアセンブリコードにマクロを追加してみた

2013年02月10日 18時15分30秒 | PIC
PICのアセンブリコードの解析をしているのですが、
あまりに読み辛いので、マクロを使って書き換えてみました。
使ったマクロはこんな感じ。
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にしてもニーモニックは
似たり寄ったりなので、しょうがないかなとも思います。

最新の画像もっと見る

コメントを投稿