インラインアセンブルの使い方


【インラインアセンブルとは?】

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言語);     //変数操作不可
  }
   
 

【インラインアセンブル例】











       目次ページへ