See also: Programming Languages
Assembly is fundamentally a more human-friendly version of Machine Language, in that instead of numbers, instructions are represented by Mnemonics. Assembly can be directly translated into machine code since each register and instruction have a corresponding bit pattern.
As it is closer to the machine's own language, a small program written in Assembly is often faster than a program, compiled from a higher-level language, that does the same thing. With the development of optimized compilers, larger programs written in a high level language will generally compile into a faster executable, while the same program, written entirely in assembly, will suffer from the shortcomings of the programmer (mainly the code's organization).