Assembly language was once the only language that existed for programming computers. That was before it was used to build the first compiler. A compiler is in fact nothing but an automated assembly programmer. Then why would you still want to learn assembly? Well, here are some reasons:
Speed. Compilers will probably never be as smart as you and me. That's why you can produce code that is much faster by manually compiling the code. Especially since the introduction of the multi-pipeline Intel Pentium processor family, you can get enormous speed-ups by smart choice of instructions and instruction order.
Special Tricks. Some things are simply impossible to code using a compiler, while in assembly language you can do about anything you can think of. This property has been used extensively by virus programmers. They use assembly language to let the program continuously rewrite itself, encode itself, copy the code to a secret spot in memory and infiltrate into the operating system in order to deny it's own existence. Regarding virus programming, I wish to emphasize that I myself never created a virus, never released it, never forgot to enable the safety switch when debugging a virus and never had to re-install my computer after such 'accidents'.
This is one of the best Assembly tutorials I know. It starts at the basics of bits and bytes all the way to wrighting small programs. Once you are finished with this one, you should be able to read and understand the original programmer's manuals from Intel. They contain information about the most recent technologies like MMX, Pentium instructions and so on.
Tutorial 80x86/87 Assembly Language
ASSEMBLY LANGUAGE TUTORIALS AND INFO