hello , I am calling C functions from assembly .The C functions has two float arguments, one variable is in R4 to R7,other is in some memory location assigned by the compiler .How can i pass argument to this memory location ? How can i know this memory location ?Please help ...
the problem got solved ...there is a mistake in C51 ...in the page 171 instead of R0 it should be DPTR ...
from C51 : MOV R0,#?_function?BYTE+3 ; correction: MOV DPTR,#?_function?BYTE+3 ;
somewhere in C51 there is the necessary to make the compiler aware of internal XDATA where rather than in P2, the high address is in some SFR. I suspect that declaring the correct chip will do it. There will be more to it since the internal xdata COULD be external and thus P2/P0 addressed. Anyhow it is documented. OR is it that you have declared pdata and forgot to set the high address SFR in startup.
anyhow it is all somewhere in the documentation.
Erik