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 0This 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.