The question is why do you want to execute out of data memory? Did you run out of program memory space? If so, you might take a look at a recent article in Embedded Systems. It was either this month or last, I don't have my article folder at hand, but
it describes how you can extend both the program and data memory without using additional pins for bank switching. It was a really slick article. The author I think worked for an emulator manufacture. Sorry about the details, e-mail me if you cannot locate
Here are the details:
Martin B. Pawloski (firstname.lastname@example.org). August 2005. "Expand Your 8051 Memory". Embedded Systems Programming. p 20-29.
Abstract: Here's a way to extend the life of the ever-popular 8051 microcontroller. The author's clever circuits and software extend the chip's addressing range without awkward tricks or cumbersome add-ons.