>>1
Specify which assembler.
Answer assuming x86:
Here's the definitive manuals you'll want to read for x86:
http://www.intel.com/products/processor/manuals/
Learn and understand C, it will make coding in asm much easier.
If your platform is Win32, you might also want to learn Win32 API and formats such as the PE file format. For Linux, you'll want to learn about the ELF format and the syscalls.