1.places programs into memory and prepares them for execution
2.automates the translation of assembly language into machine language
3.accepts a program written in a high level language and produces an object program
4.appers to execute a source program as if it were machine language