The assembler generates correct instructions by scanning the program code twice. The first time it count how long the machine instructions will be to find out address of all the LABELS.
This first scan leads to creation of a symbol table that has list of all addresses and where they will be in the program. This table is know as symbol table.
On the second scan, machine code is generated and the symbol table is used to generate the correct addresses.
Therefore a 2 pass assembler scans the program and creates the symbol table in first pass and in second pass it generates the machine code.
Hence, Only Option A is right.