1.5 passes - only parses entire file once, then evaluates forward-referencing expressions in second pass Uses hash table for labels, defines, and macros for fast lookup Built-in instruction table, doesn't need to be read from file Code counter, program statistics, and symbol table modes