XC8ネタ
アセンブラメインでやっていると、いざCで書こうとすると?となることがあります。
備忘録がてら書きためていけたらと思います。
まずXC8にASMを埋め込むには3通りの方法があります。
1.外部リンクにする。
2.ASM(”〜〜”); 1行タイプ
3.#ASM #ENDASMで挟む、この時#の前にスペースをおいてはいけない。
アセンブラ内で変数を参照するには参照先が固定されていること、
例、
Voletile unsigned char result;
ASM("MOVF _result、W”); // 変数名の前にアンダーバー
共用体、構造体のメンバーのアドレスは渡せない。
例(16ビット変数のシフト)
Voletile unsigned int dt;
dt = 0x10f0; // 16ビットで扱う
#ASM
banksel(_dt);
RLF bankmask(_dt);
RLF bankmask(_dt+1); //共用体メンバーのアドレスは渡せないので手計算!
#ENDASM