A tool that does parsing and simple syntax checking for a hypothetical assembly language on a hypothetical 16-bit machine.
It translates instructions to binary code and creates table of symbols and relocations (inspired by GNU toolchain) needed by linker and loader to finally create a runnable file that could be emulated.