The obvious (and IMHO best) answer is the
z80asm included as part of the
z88dk. Called either after the C compiler, or simply as an assembler, its ability (with the z88dk linker) to pull large numbers of files with very flexible origin locations together is a winner.
Also, z80asm is very actively maintained and supported by
Paul and the rest of the z88dk team, with a
daily drop being made available, umm daily.
There's been quite a bit of traffic on this forum about z88dk, so a quick search will find what you need.