You may also like to look at code relocation where addresses are resolved at load time or using only addressing via registers for both jumps and load/store op's. But to be realistic you need to asm only! and it's very hard work to write such programs. Better to get a bigger CPU!.
Mark