This document discusses the design and process of a two-pass assembler. It begins by outlining the general tasks performed by an assembler, including defining symbol tables and literal tables in Pass 1, and looking up symbol values and generating instructions in Pass 2. It then provides more details on the data structures, databases, and algorithms used in each pass, including flow charts showing the process. Key aspects covered include the symbol table, literal table, base table, and potential content and formats of machine operation tables for each pass. An example assembly source program is also included.