Yes, I've been experimenting with:
MOV temp16,DPTR; save DPTR
MOV DPTR,vector
PUSH DLO
PUSH DHI
MOV DPTR,temp16 ; restore DPTR
RET
but you can't manipulate DPTR in one go, so it ends up as:
MOV temp16lo,DLO
MOV temp16hi,DHI
MOV DLO,vectorLO
MOV DHI,vectorHI
PUSH DLO
PUSH DHI
MOV DLO,temp16lo
MOV DHI,temp16hi
RET
and having to move things as single bytes, I could go to:
MOV temp8,A
MOV A,vectorLO
PUSH AREG
MOV A,vectorHI
PUSH AREG
MOV A,temp8
RET
and ensure interupts don't modify the temp location.