请问楼主 在以前的帖子中有如下一段
如何从C中调用ram内的程序[原创] 在作flash程序时,我准备将程序放在ram内,再从c调用: fun() { unsigned char ram_fun[]; //填充ram_fun; asm{ BSR ram_fun; //这里出错!!为何? }} 但汇编的调用语句出错。请问如何解决?
搞定了! asm{ LDHX ram_fun; JSR ,X; }
我像上面说的使用,编译器总是说 ram_fun 的地址不存在。还有HC12 中没有LDHX指令,它是不是LDX ,@是什么意思 ,HC12汇编中也没有它呀?到底如何将ram_fun 的地址复给X? 我用立即数是好使的,例如我将ram_fun 定义在$2000,然后 用asm{ldx #$2000; jsr 0,x;}好使,但就是不能像上面那个帖子中那样使,为什么?
还有 在以前的帖子中还有如下一段
没有啊 用指针 楼上的怎么copy的?
void CopyInRAM(void) { word *srcPtr, *dstPtr; word count;
srcPtr = (unsigned int *)0xFD00;
dstPtr = (unsigned int *)0x0340;
for (count = 0; count < 250; count++, dstPtr++,srcPtr++) { *dstPtr = *srcPtr; } }
啊 知道了 可以直接调用函数地址
srcPtr = (unsigned int *)&func;
我像上面最后一句那样使
定义函数 void flashf(void);
unsigned int *p;
p=(unsigned int *)& flashf;
编译器报告Non standard conversion used. 到底应该如何应用函数名?
拜托有谁知道回一下,谢谢!
|