CCS中嵌入BRA指令为什么编译不通过

[复制链接]
1743|7
 楼主| johdon23 发表于 2015-2-12 11:16 | 显示全部楼层 |阅读模式
嵌入BRA指令如下,目的是强行跳转到0x20266地址去执行



__asm("BRA #20266");
dirtwillfly 发表于 2015-2-12 13:44 | 显示全部楼层
你用BRAX试试,BRA好像只能跳转到不超过0xFFFF的地址
 楼主| johdon23 发表于 2015-2-13 09:45 | 显示全部楼层
本帖最后由 johdon23 于 2015-2-13 10:01 编辑

更正一下:
     现在的现象应该是:编译没有报错,但是无法生成.out文件。  换成BRAX语句,现象一样!
     但是删除这条汇编语句之后,能够正常生成.out文件;
     并且如果我将汇编语句改成__asm("nop");,也能编译通过并生成.out文件。
     说明__asm()的写法没有错误,应该是BRA或BRAX这条语句不对!
  
dirtwillfly 发表于 2015-2-13 22:02 | 显示全部楼层
奇怪的问题

有没有可能是:BRA #20266,这句引起的,或者是#20266存储的内容引起的?
 楼主| johdon23 发表于 2015-2-25 09:02 | 显示全部楼层
问题是为什么 BRA #20266 就不对呢?
正确的写法到底是啥啊?
dirtwillfly 发表于 2015-2-26 20:47 | 显示全部楼层
johdon23 发表于 2015-2-25 09:02
问题是为什么 BRA #20266 就不对呢?
正确的写法到底是啥啊?

编译时有什么错误提示?
 楼主| johdon23 发表于 2015-2-28 13:36 | 显示全部楼层
错误提示如附件所示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| johdon23 发表于 2015-3-2 11:39 | 显示全部楼层
问题已经找到了!
应该写成 __asm(" BRA #20266");
即在BRA指令前至少要有一个空格!
在MSP430汇编指令的手册中有如下规定:
“A mnemonic cannot begin in column 1 or it will be interpreted as a label. Mnemonic opcodes and assembler directive names without the . prefix are valid label names. Remember to always use whitespace before the mnemonic, or the assembler will think the identifier is a new label definition.

再次感谢大家的热心回复!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

71

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部