1. Попробуйте
push {r0}. В скобках можно передавать список регистров, например, push {r0-r3, lr}.
2. Не совсем понятна задача. Вот пример копирования массива (r0 - куда копировать, r1 - откуда копировать, r2 - сколько слов копировать)
Код
memcpy_dw_loop:
ldr r3, [r1], #4
str r3, [r0], #4
subs r2, #1
bne memcpy_dw_loop
3. В Cortex-M3 теневых регистров нет (правда, есть два стека MSP и PSP). При входе в прерывание некоторые регистры автоматически сохраняются
в стек, при выходе - извлекаются. Отключить этот механизм нельзя. Соответственно ответ на вопрос: "не сохраняются".