This document discusses assembler functions and design. It describes how assemblers translate mnemonic operation codes to machine language equivalents and assign addresses to symbolic labels. It discusses machine-dependent features like instruction formats and addressing modes. It also covers machine-independent features such as literals, symbol definitions, expressions, and program linking. The document uses examples to illustrate assembler directives, object code format, and how a two-pass assembler handles forward references.