From: Randy Y. <ya...@di...> - 2015-05-11 23:36:08
|
Randy Yates <ya...@di...> writes: > "Maarten Brock" <sou...@ds...> writes: > >> Hello Randy, >> >>> What I AM doing is calling an assembly routine from c. >>> >>> If I have an assembly routine with the following signature: >>> >>> uint8_t my_func(uint8_t chr); >>> >>> then wouldn't the assembly code for handling the passed parameter "chr" be >>> >>> MOV A,dpl ;Put 'chr' parameter in A >>> >>> and when it's done, wouldn't the result be put back into dpl? >>> >>> MOV dpl,a ;dpl (return value) = 'A' even >>> parity >>> RET ;All done >>> >>> --RY >> >> Yes, that's correct. > > Thanks Maarten. > > I have another question: How do I control where the stack is located > when using sdld? I see the stack size can be controlled via the -S > option, but I don't see a stack location option. PS: It looks like it's getting located at 0x08 on startup (beginning of second register bank). I think a better initial value would be 0x30, the beginning of internal non-SFR memory just past the bit-addressable memory. That gives you to 0x7F, or 80 bytes, to grow. -- Randy Yates Digital Signal Labs http://www.digitalsignallabs.com |