El problema es que tienes una confusión (común) con el funcionamiento del comando LDR. A ver te explico:
LDR R0, R1 @;Carga en R0 la dirección de R1
LDR R0, [R1] @;Carga en R0 el valor que contiene R1
Aquí te explico el funcionamiento de tu rutina:
.thumb
.align 2
main:
push {r0-r1,lr}...