There are a couple of things you can do. As mentioned, outputting to a to binary is probably one of the easiest.
There are several utilities named HEX2BIN that will do that and most will support an address offset or have provision for the base to be at the address of the first hex record.
I use 64tass and it includes a .offs (offset) directive. This was common back when you were assembling code on the same machine it was targeted for. If you were writing code for ROM, you needed the assembler to put the code in RAM. (And even if you were targeting RAM, you had to avoid your editor / assembler while you were doing development work.) So you could basically have the program counter set to something like $Fxxx but put the assembled (binary) code at another address like $1xxx. Using the offset feature, you can usually set the base address to $0000 when you are putting it out in Intel HEX format.
But what has become my favorite for this like this is a utility called SRECORD by Ken Krother. This will let you convert between formats and handle things like offsets. And it even supports conversion to the format you could load into the Ohio Scientific C1P monitor. Anything that can do that has to be alright.
http://srecord.sourceforge.net/It could do either Hex to binary conversion or it could recreate the Hex records with the offset subtracted.
Thanks,
Jim W4JBM