这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » M16c/62p汇编语言求救!?

共16条 1/2 1 2 跳转至

M16c/62p汇编语言求救!?

菜鸟
2008-04-30 14:07:43     打赏

 VprogTOP .equ 0D0000H    ;
SB_Base  .equ 00122AH    ;
FB_Base  .equ 000500H    ;
;==============D0000==========================================
 .section prog,code          
 .org  VprogTOP
 .SB   SB_Base
 .FB   FB_Base
          LDC       #351EH,ISP                                             
          LDC       #251EH,SP                                             
          LDC       #000FH,INTBH                                            
          LDC       #0FEDCH,INTBL                                          
          LDC       #122AH,SB                                               
          LDC       #0500H,FB                                               
 _init:         
          MOV.B:Z   #0,012CAH               ;B7CA12        
          MOV.B     #0,012CAH                ;B7CA12
.end
源码如上,其他设置全部默认,使用三菱hew开发环境,
结果MOV.B:Z   #0,012CAH  编译出来的机器代码不是B7CA12;

然后将
 .SB   SB_Base
 .FB   FB_Base
          LDC       #122AH,SB                                               
          LDC       #0500H,FB   
这个四条指令取消掉后,编译完全正确,请汇编高手指点一下!
汇编环境
CPU SERIES : M16C/60
TOOLCHAIN NAME : Renesas M16C Standard Toolchain
TOOLCHAIN VERSION : 5.30.02




关键词: 汇编语言     求救    

菜鸟
2008-04-30 14:11:51     打赏
2楼
我也不会,顶一个先

菜鸟
2008-04-30 15:17:41     打赏
3楼

晕倒,都没有人回答,看样子这个片子好像不是很流行啊,自己顶一下吧;


高工
2008-04-30 15:34:36     打赏
4楼
版主大概在休假~~

这个板块有瑞萨公司的工程师担任版主~~

定期会回答大家的疑问!

所以还请耐心等待!

菜鸟
2008-04-30 16:01:22     打赏
5楼
版主已经做的很好了,非常感谢版主的帮助!
我的意思是说论坛人气

助工
2008-04-30 16:03:32     打赏
6楼
M16C/62P是应用范围比较多的产品。只是现在大家都需要赶工程进度,所以都用C来写代码,恐怕没那么多时间来仔细研究汇编哦。
如下几个型号都不错
M30620
M30626
我这里M30626FHPFP#U3C满有优势。

助工
2008-04-30 16:40:33     打赏
7楼
我用汇编的哈,但MCU是R8C
估计和这个地址有关:012CAH
编译器可能是用了FB,或者SB
就是说
MOV.B     #0,012CAH 
被编译为了:
MOV.B     #0,XXXXH[SB] 或者MOV.B     #0,XXXXH[FB]
因为012CAH地址比较大

不知道对否。。。。

你可以看一下反汇编的结果啊
编译软件代码窗口左上角有三个按钮,分别是原代码、混合代码、反汇编代码
你按中间的那个看看

助工
2008-04-30 16:46:44     打赏
8楼

上面是编译后的结果,编译器将您的“MOV.B:Z #0,012CAH”优化为“MOV.B #0,A0H[SB]”,因为SB的寻址要快于对绝对地址的寻址,而且代码量也会减小。
这个问题是我们编译器的优化功能,您的执行结果不会受到影响。
此外:您之前的两句
“LDC       #351EH,ISP                                             
    LDC       #251EH,SP”
的写法也有一点儿问题
您这两句都是将立即数赋给了ISP,建议您在两句之间加一句“LDC #80H,FLG”,将堆栈指针切换到用户堆栈。

助工
2008-04-30 17:04:41     打赏
9楼

让我才对了


助工
2008-04-30 17:10:12     打赏
10楼
怎么R8C的指令使用SB或FB不节省周期呢
只是节省字节。。。。

共16条 1/2 1 2 跳转至

回复

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