首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2013-04-20 
如何在ARM汇编程序中表示指定的内存地址下面的小程序用于计算前20个斐波那契数area exam04, code, readonl

如何在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

热点排行