Any particular programming language? The question you ask is very general and the answer will depend a lot on your background and what you already know.
i.e. If you know BASIC and you want to learn Assembly, then choose a compiler that allows you to write BASIC and produces the Assembly so that you can analyze the result with simple programs. Along side of that, a book that covers Assembly language might help, but you probably would be better off studying the Instruction set for your particular micro of interest.