这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [已OK]关于混合编程----汇编语言中使用C的参数

共6条 1/1 1 跳转至

[已OK]关于混合编程----汇编语言中使用C的参数

菜鸟
2008-07-15 16:59:51     打赏
waitms(u8 loc)
{
  #pragma asm
      mov.b  _loc, R0L
..........
  #pragma endasm
}

这段代码中编译时提示 _loc是个undefined symbol.
是否说 loc存储在某个寄存器中,需要使用该寄存器?
但是如果修改成
waitms(u8 loc)
{
u8 test;
test = loc;
  #pragma asm
      mov.b  _test, R0L
..........
  #pragma endasm
}
仍然报相同的错误。那么要使用C中的变量该怎么个用法?



关键词: 关于     混合     编程     汇编语     言中     使用     参数    

菜鸟
2008-07-15 22:23:26     打赏
2楼

自己来回答吧。
传递过来的参数用寄存器来实现。
我用的是R8C 2C系列的,在Hew集成开发环境中参数的寄存器为FB
但是使用的时候是 -1[FB]
也就是说:
mov.b -1[FB],R0L

至于为什么使用成-1[FB],不是很明白。我当时是看汇编代码得来的。
知道的人可以帮忙解释一下。


菜鸟
2008-07-16 09:34:37     打赏
3楼
对于上面提到的问题,我也进行了测试,正如上面所写的,在汇编窗口里可以看到汇编代码使用的是FB寄存器。我认为C语言用到的临时变量,编译器都是临时分配的,所以对于另外一个程序来说,可能临时变量就不分配到这个位置了。如果每次用汇编代码来确定位置的话,不是很麻烦吗,所以我建议还是在汇编中定义一个全局的变量,在C语言中直接调用起来比较方便。

菜鸟
2008-07-16 16:06:04     打赏
4楼

因为我写的两个函数都只有一个参数,所以参数都以FB寄存器来传递。
而对于LS说的在汇编中使用全局变量,是不是说将参数给汇编的变量??
在C中使用汇编中的变量还没用过,可以试一试。谢谢LS的。


菜鸟
2008-07-16 17:17:44     打赏
5楼
现在的做法是 在C程序中定义一个全局变量,然后在汇编中glb后再使用。
不知道和 huchunm 所要表达的意思一样不?

菜鸟
2008-07-17 15:48:28     打赏
6楼

我认为你们俩个说的意思是一样的,子函数中的局部变量是无法在汇编中被识别的。


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]