【インラインアセンブルとは?】
CCS C Compiler ではインラインでアセンブラ命令を記述すること
が出来ます。
これはどういう意味かというと、どうしてもC言語では記述しにくい
プログラム部分を、アセンブラ命令で記述することができ、しかも
そのアセンブラ命令の部分を、C言語の関数中のどこに挿入して
も良く、一緒に一つのプログラムとして扱うことが出来るということ
です。
CCS C Compiler で使えるアセンブラ命令は、MPLABで使うものと
全く同じものです。
【インラインアセンブル指定関数】
インラインでアセンブルを記述するためには、下記の関数を使い
ます。
プリプロセッサ関数
機能・その他
#ASM アセンブラ命令の開始を宣言する #ENDASM アセンブラ命令の終了を宣言する
つまり #ASM と #ENDASMで挟まれた間にアセンブラ記述が
出来るということです。
【引数、戻り値の渡し方】
C言語とアセンブラ言語間での引数、戻り値の渡し方は、下記の
ようにします。
(1) 引数
引数は int で1バイト符号無し整数として定義します。
アセンブラ内では直接引数名で使うことが出来ます。
(2) 戻り値
まず戻り値がある時には、関数をint型で定義します。
アセンブラ命令から値を返すために特別な変数が規定されて
います。
戻り値変数: _RETURN_
ただし、この変数を使う時には、#ENDASMからその関数の
最後の間で、C言語での記述をしてもその変数は一切変更
してはなりません。
(3) 以上をプログラムのパターンで表すと下記の様になります。
int 関数名(int 引数名){
----(C言語);
#ASM
-----
movf 引数名,W
-----
movwf _return_ //戻り値
#ENDASM
----(C言語); //変数操作不可
}
【インラインアセンブル例】