我在学习arm汇编的时候感觉很奇怪,为什么使用ldr指令取得的程序段语句标号的值和使用adr指令的值是不一样的?!<br />使用ldr始终不能取得正确的地址值!!!这是为什么?<br /><br />源代码如下<br />N equ 10<br /><br /> area example,code,readonly<br /> entry<br /> code32<br /><br />START ldr sp, =0x40003f00<br />此处--〉 ldr r3, =FUN<br /> mov r0, #N<br /> mov r1, r0<br /> add r3, r3, #1<br /> stmfd sp!, {r1-r12,lr}<br /> bx r3<br /> STOP ldmfd sp!, {r1-r12,lr}<br /> b START<br /> <br /> <br /> <br /> code16<br />FUN cmp r0, #0<br /> beq RET<br />LOOP sub r1, r1, #1<br /> add r0, r1, r0<br /> cmp r1, #0<br /> bne LOOP<br />RET ldr r3, =STOP<br /> ldr r2, =0x01<br /> bic r3, r2<br /> bx r3<br /> end |
|