[讨论] C中使用汇编访问寄存器结构体

dontium   2013-9-21 13:43 楼主
在CCS下,使用的C文件中嵌入汇编语言,在访问寄存器结构体时提示没有定义。如:

asm("   MOV     ACC,@_AdcResult.ADCRESULT0<<12");

编译时提示:
The following symbols are undefined:
2 Assembly Errors, No Assembly Warnings
ADCRESULT0



这是什么原因?怎么解决呢?------不使用绝对地址访问

回复评论 (6)

我试着放在main.c

  InitGpio();
  InitSciaGpio();
  asm("   MOV     ACC,@_AdcResult.ADCRESULT0<<12");

编译通过,没有报错!你那边是不是没有包含到头文件导致,试试用C语言,直接操作AdcResult.ADCRESULT0看看呢,如果还是报错,就不是汇编问题,就是定义问题了
点赞  2013-9-21 22:08
学习一下!
点赞  2013-9-21 23:14

回复 沙发elkite 的帖子

使用C是正常的。
点赞  2013-9-22 00:30

找到办法了:

;MOVW      DP,#_AdcResult+2      ; AdcResult.ADCRESULT2
        ;MOV       AL,@_AdcResult+2      ;
        ;MOVW      DP,#_temp         ;
        ;MOV       @_temp,AL         ;
点赞  2013-9-22 14:41
why在我这编译却是正常的呢??
点赞  2013-9-22 21:03

回复 6楼elkite 的帖子

找一找原因。看看到底是怎么回事,看看反汇编是否正常。
我在使用时发现,有时候汇编语句错了也不报错。

[ 本帖最后由 dontium 于 2013-9-22 21:52 编辑 ]
点赞  2013-9-22 21:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复