欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

怎么在arm汇编程序中表示指定的内存地址

更新时间: 2014-01-05 03:17:56 责任编辑: Author_N1

 

如何在ARM汇编程序中表示指定的内存地址

下面的小程序用于计算前20个斐波那契数

                area exam04, code, readonly

N                equ                20
M                equ                4*N
fib                space        M        
                entry
start                ldr r0, =fib                
                mov r1, #1        
                mov r2, #1                        
                str r1, [r0]                
                str r2, [r0]                
loop                add r3, r1, r2                
                str r3, [r0]                
                mov r1, r2
                mov r2, r3
                cmp r0, #fib+M
                blt loop

stop         b stop

                end

编译时出现错误提示:Error: L6286E: Value(0x8000) out of range(0 - 0xff) for relocation #0 (wrt symbol exam04) in exam04.o (exam04)

指示发生错误的指令是:cmp r0, #fib+M
我的本意是取缓冲区fib偏移M个字节的地址,把fib装入寄存器在加偏移固然也可以,但我想直接在汇编阶段也应该可以由汇编器计算这个地址,不知道应该如何书写这个地址?谢谢。
--参考方法--
我个人觉得确实应该用这个偏移,确定不是其他问题导致的这个错误?
--参考方法--
 cmp r0, #fib+M     #fib+M 限制很多 ,内核不同 也有区别

ldr   r4,=fib
add   r4,r4,#M
cmp   r0,r4
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:17:56
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20558/
本文WWW.DOC100.NET DOC100.NET版权所有。