Almost anything but an 8051?
Actually, just about anything that has a stack-oriented architecture, or a register-oriented architecture with an orthogonal instruction set and decent indexing. If I can, with confidence, slam a bunch of parameters onto the stack or into some registers and call a function without worry, then I'm happy.
The PIC (and the 8051, and some others) are so poor at stack usage and pointer manipulation that unless one wants severely inefficient code one pretty much has to define all the program data as a bunch of globals. If you try to make your life more efficient by programming in C, you'll find that the C compilers for the PIC and 8051 give you a choice between something that isn't quite C, or C code that's _really_, _really_ inefficient. If you want to write assembly using C calling conventions
-- well, find another processor, because you can't.