When programming 8-bit microcontrollers, the two options you usually have are assembly or C. Each language has its advantages and disadvantages.
Assembly is very low level and involves learning the instructions unique to each processor architecture. This approach gives you control of most aspects of your program and is very deterministic. You'll know how many clock cycles each instruction takes and how the registers are used. If you need a high level of optimization for a small microcontroller, assembly is the way to go. The main disadvantage of using assembly is that it can take much longer to write a program in assembly than in C.
C is a higher level, more portable language that most microcontrollers have compilers for. It's also suitable for programming most applications. The greater abstraction can make writing programs easier and allow you to reuse code between projects. The C compiler you're using can hide many of the implementation details though, so learning about your specific compiler can be as important as learning C itself.
Since C tends to be a bit easier to pick up, I'll assume that you want to use that.
If you don't already know how to write in C.There are many books and online references that one can use to learn C.
http://aelinik.free.fr/c/ -- Teach Yourself C in 24 Hours in HTML format.
http://www.cprogramming.com/tutorial/c-tutorial.html -- Another tutorial to get one started in C.
Among the numerous printed books one can find online, the classic
The C Programming Language, 2nd edition is a small compact book that introduces the main concepts of the language.
If you're already fluent in C.Once you have gasped C, you just need the platform specific tools for microcontrollers.
Compiler / IDE: AVR and PIC microcontrollers each have free toolchains. Check out
AVR Studio 6 for Atmel parts and
MPLAB for Microchip parts.
Programmer / Debugger: It is important to get a tool that has both. At some point, your code won't work and a debugger will save you a significant amount of time and sanity. Atmel parts:
AVR Dragon. Microchip parts:
PICKit3. Once you have those, you can start prototyping your boards and programming. There are also tutorials floating around the internet based on using specific features of each microcontroller should you get stuck.