Ti rispondo al volo, in attesa di una risposta corretta / completa da parte di un prof / tutor.
Il registro a disposizione per salvare l'indirizzo di ritorno (ra) è uno solo ed è il 31 (convenzione), se chiami due jal una dopo l'altra nella stessa "procedura" non succede nulla perchè prima viene eseguita una jal, ritorna al chiamante ed esegue l'istruzione dopo (in questo caso una seconda jal) e nota che quindi sono tutte procedure foglia, però se chiami una jal ad una funzione non foglia che quindi a sua volta chiama nuovamente una jal il registro con l'indirizzo di ritorno viene sovrascritto e perdi l'indirizzo di ritorno precedente che in questo caso è essenziale per procedere con l'esecuzione del codice, quello che devi fare è salvare nello stack il vecchio indirizzo di ritorno in modo che non venga sovrascritto (vedi push / pop dello stack) e prosegui tranquillamente con l'esecuzione del codice sapendo che puoi recuperare il vecchio indirizzo di ritorno dallo stack.