3359|1

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

AVR嵌入汇编的问题 [复制链接]

我用IAR时 在c中嵌入汇编 当使用 BRCC  PC+0x08 时,编译器莫名其妙的编译成BRCC  PC-0x3f,
哪位高手能帮我解释并解决一下!!!!
89:                asm(
90:              ";if ( (wAddr & 0x0700) < 0x0200 )\n"
91:              "ANDI      R19,0x07               \n"
92:              "CPI       R19,0x02               \n"  );
+00000061:   7037        ANDI      R19,0x07       Logical AND with immediate
+00000062:   3032        CPI       R19,0x02       Compare with immediate
94:       asm(       "BRCC       PC+0x08                \n" );
+00000063:   F600        BRCC      PC-0x3F        Branch if carry cleared

95:       asm(   ";return  RAM[ wAddr & 0x07ff ]   \n"
96:              "NOP                              \n"
97:                  "NOP                              \n"
98:              "MOVW      R30,R18                \n"   
99:              "SUBI      R30,0xBB               \n"   
100:             "SBCI      R31,0xFE               \n"   
101:             "LDD       R16,Z+0                \n"   
102:             "RET                              \n"   
103:             ";if ( (wAddr & 0x0700) > 0x02ff )\n"
104:             "CPI       R19,0x03               \n"
105:             "BRCS      PC+0x06                \n"
106:             ";return  RAM[ (wAddr & 0x07ff) - 0x100]        \n"
107:             "MOVW      R30,R18                \n"
108:             "SUBI      R30,0xBB               \n"
109:             "SBCI      R31,0xFF               \n"   
110:             "LDD       R16,Z+0                \n"   
111:             "RET                              \n"   
112:             ";else return  0                  \n"
113:                 "LDI       R16,0x00               \n"
114:             "NOP                              \n"
115:                 "NOP                              \n"
116:                 "NOP                              \n"
117:                 "RET                              \n" );
+00000064:   0000        NOP                      No operation
+00000065:   0000        NOP                      No operation
+00000066:   01F9        MOVW      R30,R18        Copy register pair
+00000067:   5BEB        SUBI      R30,0xBB       Subtract immediate
+00000068:   4FFE        SBCI      R31,0xFE       Subtract immediate with carry
+00000069:   8100        LDD       R16,Z+0        Load indirect with displacement
+0000006A:   9508        RET                      Subroutine return
+0000006B:   3033        CPI       R19,0x03       Compare with immediate
+0000006C:   F1B0        BRCS      PC+0x37        Branch if carry set
+0000006D:   01F9        MOVW      R30,R18        Copy register pair
+0000006E:   5BEB        SUBI      R30,0xBB       Subtract immediate
+0000006F:   4FFF        SBCI      R31,0xFF       Subtract immediate with carry
+00000070:   8100        LDD       R16,Z+0        Load indirect with displacement
+00000071:   9508        RET                      Subroutine return
+00000072:   E000        LDI       R16,0x00       Load immediate
+00000073:   0000        NOP                      No operation
+00000074:   0000        NOP                      No operation
+00000075:   0000        NOP                      No operation
+00000076:   9508        RET                      Subroutine return

点评

以上代码是反汇编结果  详情 回复 发表于 2013-2-8 20:15
点赞 关注
 

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

回复 楼主 zero1386 的帖子

以上代码是反汇编结果
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表