При вызове sub1 из main адрес возврата сохраняется в регистре LR. Соответственно, для возврата нужно содержимое LR записать в PC (счётчик команд), команда BX LR именно это и делает.
Но если мы хотим из sub1 вызвать sub2, то так просто это уже не сделать, нужно куда-то сохранить текущее содержимое LR, оно нам ещё потребуется, ведь в нём лежит адрес возврата (в main). Поэтому в sub1 придётся написать PUSH {LR} ; ...... BL sub2 POP {PC} И вот это всё можно заменить на простой переход к sub2. В LR тогда останется адрес возврата в main, куда и произойдёт возврат из sub2 после исполнения в ней команды BX LR
--------------------
Russia est omnis divisa in partes octo.
|