mov r0,r12 is not r12=r0, but r0=r12
stmdb is stacking onto an empty, descending stack, which is a shame because it should be a full descending
ldr r0, [r12]+ --> ldr r0,[r12],#4 (no +)
ldmia {r12}, sp! makes no sense whatsoever
jmp isn't an ARM instruction at all
You really need to go read up on ARM code, you just can't make stuff up... If you post what you want to do in pseudocode/C/whatever then I'll translate it into ARM for you so you get the idea...