This thread is really out of date. Axe now comes with the Memkit Axiom (z80 source included, you should check that out) which handles all this stuff for you.
As far as your assembly; ld (de),(hl) is not a real instruction. You're going to have to use the 'a' register as an intermediate; ld a,(hl) \ ld (de),a which means your loop counter will have to change as well, you can use b for that which gives a you the djnz optimization as well. But yeah, here's the current routine for copying the name in Memkit:
;Input: hl = Pointer to vat entry
; de = Pointer to string buffer
GetName:
ld bc,-6
add hl,bc
ld b,(hl)
ex de,hl
Loop:
dec de
ld a,(de)
ld (hl),a
inc hl
djnz Loop
ld (hl),b
ret