1. A central processing unit for processing multiple tasks, comprising: at least one memory for storing instructions and data; a program counter for storing a program counter value; an execution unit for retrieving and processing an instruction located in said memory at an address corresponding to said program counter value; a plurality of stacks independent of said memory, wherein each of said plurality of stacks has memory locations for storing program counter values corresponding to one of said multiple tasks; a multiplexer for connecting said program counter to each of said plurality of stacks; and a stack select register, connected to a control input of said multiplexer, for enabling the transfer of program counter values between said program counter and one of said plurality of stacks as indicated by the contents of said stack select register.