The document discusses the design of an assembler. It begins by outlining the general design procedure, which includes specifying the problem, defining data structures like symbol tables and opcode tables, specifying data formats, and specifying algorithms. It then discusses the specific design of an assembler, including stating the problem, defining data structures like symbol tables and opcode tables, specifying table formats, and looking for modularity. Finally, it provides an example assembly language program and discusses how the assembler would process it using the defined data structures and tables during its first and second passes.