Pass 1: Builds the Symbol Table with all labels and their PC relative addresses, processes directives that affect memory layout, and calculates addresses for all instructions
Pass 2: Generates the actual machine code using the completed symbol table to resolve all references