The document discusses different options for assembler design, including one-pass, two-pass, and multi-pass assemblers. A one-pass assembler generates object code directly without a second pass over the source code. It handles forward references by omitting operand addresses until symbols are defined and linking instructions to symbols. A multi-pass assembler allows forward references to be resolved over multiple passes by tracking symbol dependencies.