In an assembly language that does not support indirect addressing, such as the MU0 Processor, we have to be a little more creative in order to achieve equivalent behaviour.

Branch and Link

We can emulate the function of the Branch and Link instruction by modifying the binary for an instruction at runtime:

label1 LDA label1
       ADD offset
	   ADD jmp_opcode
	   STA ret_addr
	   JMP subroutine
return ...
...
offset DEFW &0005 ; `return` is 5 instructions after `label1`
jmp_opcode DEFW &4000
ret_addr DEFW 0

This creates the binary representation of the instruction JMP return, and stores it in ret_addr. This allows the called subroutine (subroutine here) to return to its caller with JMP ret_addr.