From LXF Wiki
Machine code, but with easy-to-remember words replacing binary. For instance, instead of saying '11001001' you would say 'mov ax, 20' etc. Assembly language also lets you use things like textual labels and macros to make programs easier to read.
Why would you code in assembly? For desktop applications, like office suites and web browsers, it's pretty much unusable -- it's laborious to write, hard to debug and not portable. However, for speed-critical routines in an OS kernel, or embedded devices, it's extremely useful, often resulting in faster execution than C compiler-generated code.
A good assembler for Linux is NASM.