Z80 アセンブラからCの関数を呼ぶ方法です
アセンブラからCの関数を呼ぶ
実行したい関数のサンプル
C
ULONG test(UBYTE bt,UWORD wd,ULONG lg);
これをアセンブラから呼び出すには以下のように記述する
ASM
LD XWA,04050607H ;3番目の引数「lg」にセットする値
PUSH XWA ;スタックに引数を格納
LDW BC,0203H ;2番目の引数「wd」にセットする値
PUSHW BC ;スタックに引数を格納
LDW DE,0001H ;1番目の引数「bt」にセットする値
PUSHW DE ;スタックに引数を格納
CALL _test ;関数を呼び出す
POPW DE ;スタックの後始末
POPW BC ;スタックの後始末
POP XWA ;スタックの後始末
なお、関数の戻り値は
ASM
XHL
というレジスタに格納されます。