2008/05/17

PICの小技: Wを破壊せずにレジスタ間コピー

最近ずっとPICのアセンブラで遊んでいます。
PICで良いプログラムを書くのは、
まるでパズルを解くようなモノですね。
で、それをうまくやるマクロを書くのが、
また面白い。

たとえば、こんなのとか。
xorwf SRC,W
movwf DST
xorwf SRC,W
xorwf DST,F
これでSRCからDSTへのコピーができます。
このとき、Wを経由して処理しているにもかかわらず、
結局Wの内容は変化しない、というのがミソ。
したがって、Wの値を保持しておく必要がある場合でも使えます。
必要な命令数は、普通にWを退避してコピーするのと同じですが、
この方法だと退避先の心配をしなくて良いので便利です。

コピー元がリテラルの場合も同様。
xorlw DATA
movwf DST
xorlw DATA
xorwf DST,F
リテラルを2回使いますが、マクロ化すれば特に問題ないでしょう。
というか、マクロ化しないと読みにくくてしょうがないですね。

0 件のコメント: