In the following example the function c_func calls an assembler routine asm_func, which takes two parameters.
extern int asm_func(unsigned char, unsigned char);The corresponding assembler function is:
int c_func (unsigned char i, unsigned char j)
{
return asm_func(i,j);
}
int main()
{
return c_func(10,9);
}
.globl _asm_func_PARM_2The parameter naming convention is _<function_name>_PARM_<n>, where n is the parameter number starting from 1, and counting from the left. The first parameter is passed in DPH, DPL, B and ACC according to the description above. The variable name for the second parameter will be _<function_name>_PARM_2.
.globl _asm_func
.area OSEG
_asm_func_PARM_2:
.ds 1
.area CSEG
_asm_func:
mov a,dpl
add a,_asm_func_PARM_2
mov dpl,a
mov dph,#0x00
ret