An assembler allows you to write your program in assembly language which is one step away from pure machine language. The assembler actually translates your assembly program into machine language. A well-written assembly language program will provide the most speed and smallest code size, but writing a program in assembly language is generally considered to be more advanced and more difficult than writing a similar program in an interpreted or compiled language. Most 8052 programmers work in assembly language (about 52% according to a recent 8052.com survey). Using assembly language also gives you complete control over what the processor is doing.