Sorry for the delay in response. Work + medical issues here... I'm not really clear on what you're looking for.
If you want on-machine assembers the best is in the ROM II expansion ROM. It's available as an image and works with REX. Other than that there are a couple of assembers written in BASIC but I haven't tried them and YMMV. For cross assemblers, what's the host OS? Anyway, a brief glance at your code looks like you're targetting CP/M's ASM.COM so (afaik) the most compatible UNIX cross assembler is ASM80 which you can get from my web page, http://www.sdc.org/~goosey/unix/asm80-2020-10-06.tar.gz There is also ZMAC which I don't have a handy url for sorry. z80 but it has a handy flag to show z80-only opcodes as errors for 8080 use! Also ASxxxx includes 8080. This is a big one, has crosss assemblers for like almost all the 8-bit CPUs... http://shop-pdp.net/ The old standard dos/windows assember is TASM (telemark asm aka table asm) sorry I don't have a url for that one. the Virtual T emulator INCLUDES an assember but I don't know anything about it. (if you're using RISC OS there's zmac (again no url) and my asm80 at ...riscos/asm80... ) if you're going to use asm80/zmac/asx/tasm may I suggest my header files that document a lot of the ROM API for you? http://www.sdc.org/~goosey/m100/m100def-2020-05-09.zip (new version with Tandy 200 support RSN (i promise! :)) Even CP/M's ASM.COM would work fine. All of these (except virtualT i'm sure) generate bog standard intel HEX files, and there are BASIC and BASIC/assem loaders to create a .CO from the hex files. GNU objcopy also works. Somebody had a neat python script to turn HEX into a BASIC program that does its own loading but I lost track of that one. :-(