The document discusses the functions of an assembler. An assembler takes an assembly language program as input and produces a machine language program and additional information as output. It performs two passes over the input source program. In the first pass, it processes directives and defines symbols. In the second pass, it generates the machine language program. The assembler uses tables like the symbol table, machine opcode table, and pseudo opcode table to process instructions and directives. It also uses data structures like the location counter, literal table, and base table to track information during the assembly process.