I use ca65 (for 6502 though, but apparently it does 65816 as well), which has another way to do this, using segments ... it gets a little more complicated to use, but it goes like this:
.cfg
MEMORY
{
memtest: start=$8000, size=$4000, file="test.bin", fill=yes, fillval=$FF;
}
SEGMENTS
{
test: load=memtest, type=ro;
}
.asm
.setcpu "65816"
.segment "test"
code goes here
commandline for assembling
ca65 test.asm -o test.o
ld65 -C test.cfg test.o
This would output a "test.bin" of size $4000, with offsets counting from $8000, and unused space filled with FF's ... of course you wouldn't need the fixed size here, but something like this (using multiple segments) is quite useful when assembling a ROM with multiple banks, or even the NES's vectors (always at $FFFA) 
--------------------
|


#64 |
|