Real-life assemblers use a meta-instruction (often called ORG which is short for 'origin', e.g. ORG 100
) to instruct the assembler on what address to start (or resume, when placed somewhere in the middle of the program). Of course, feel free to solve it in another way (hard-coded; command-line parameter).
Exactly what the correct address is for a program written for MARIE, depends entirely on the runtime system (on real computers, the OS; in your case, a simulator). I see code samples starting from 100, so that would make sense. Maybe addresses lower than 100 are reserved for the runtime system, who knows.
From there, the assembler automatically increases the address with every instruction. With MARIE, I suppose that's straightforward (just add one); in real-life processors, different instructions typically have different sizes.
For the rest, if you know how to convert assembly language to machine code by hand, then automating that process should be straightforward.