导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C程序中定义的XDATA变量在汇编中如何调用?急![guest]

 *第15091篇: C程序中定义的XDATA变量在汇编中如何调用?急!

  
楼 主:guest 2003年8月1日11:00
 C程序中定义的XDATA变量在汇编中如何调用?急!
我在C程序中定义了几个XDATA变量(TS,TC1等),
在汇编程序中需要调用。头说在汇编中将变量值作为DPTR
的地址来处理即可,并说他原来这样作过没问题,可我试了
很多次总是不行。非常着急,请大侠指点,多谢!

   C中:
   unsigned char xdata ts,tc1;

   汇编里:
   extrn   xdata(ts,tc1)
   。。。
   push   acc
   mov    dptr,#ts
   movx   a,@dptr
   mov    r1,a
   pop    acc
   。。。

   我作过实验,将C中定义的变量在按上述方法在汇编中读一下,
然后返回C,然后通过串口发送出来,结果什么数也没有,且有时
就死机,感觉好象是参数越界之类的问题。

  
2楼:guest 2003年8月1日11:56
 还是没搞定。顶一下。
还是没搞定。顶一下。
  
3楼:hexf2002 2003年8月4日09:23
 再顶一下。是这个问题太简单吗?
  
4楼:yyp 2003年8月4日09:46
 push   acc
   mov  

push   acc
   mov    dptr,#ts
   movx   a,@dptr
   mov    r1,a
   pop    acc
   。。。


你的返回值不能不放在R1,正确应该是放在R7。

  
5楼:hexf2002 2003年8月4日10:10
 R1只是个中间变量,不是返回值
返回值当然要放在R7中,R1只是中间变量。

这个问题应该很简单啊,可我搞了一两天了还是没搞定。
我在主程序(C语言)中给TS、TC1赋值后通过串口发送
出来,一切正常,但用上述方法一读后再发送,就什么也没了。
在汇编程序中加了一些串口发送指令想把中间结果发送出来,
结果也是什么也没有,真是见鬼,郁闷极了。不知是不是还有
什么“机关”?

  
6楼:hexf2002 2003年8月4日13:35
 再顶一下。还是没搞定。

小弟搞单片
再顶一下。还是没搞定。

小弟搞单片机、C51也有点时间了,自以为早非菜鸟了,看来真是
“学然后知不足”啊。郁闷ing。


>>>>>>对该主题发表你的看法

本主题贴数6,分页: [第1页]


[上一篇主题]:寻求答案

[下一篇主题]:<size=5>谁知道rca插座的封装(焊在板子上的那部分),有实物的帮我量一下!谢谢了