ugh, what is it about the 8051 and assembly that everyone loves? It is just the worst advice possible.
Just learn C programming (by installing Linux and using gcc, and using a book on
C programming). Then, buy a very cheap ($15 dollar) board that contains a microcontroller and is USB-programmable, and download a free compiler, and
you'll be able to write C code that can be transferred by USB to the microcontroller board, and voila.
Everyone has their favorite microcontrollers, but there are some very low cost boards that don't need any other tools, and the dev environment is free too.
The 'embedded' bit of embedded programming really just means that you can do some real-time stuff and use some integrated features in microcontrollers, like timers and interrupts. You don't need to learn that on day 1. Simple C programming will get you far.
You'll probably need to buy 2 books if you want to learn C. The book you definitely need is "The C Programming Language". The second book can be
a beginners book (although personally I think the first book is sufficient). I'm sure some people can recommend a beginners book on C.