If you just want to transfer the contents of gu8SCIData[i] into the location pointed to by memory_ptr, then you can just do this:
*memory_ptr = gu8SCIData[i];
There is really no need to fuss with the inline assembly - but the reason it might be failing could be that you are erasing the contents of the accumulator when they are needed. Try this assembly instead:
PSHA
LDA ctemp
STA memory_ptr
PULA
What is in the WriteFlash() function? Do you know that works?