The proper answer of course is C: none of the above or maybe it's D: all of the above.
While it's true that most SoCs are ASICs and vice versa, it's possible to have an ASIC without a processor although these days it would be almost un-heard of. On the other hand, I would guess that most ASSPs these days are SoC and I suppose that some FPGAs could be considere SoC although I'd prefer that my SoC have some analog I/O. And then there's the Cypress PSoC devices which definately qualify as SoC but could they also be considered ASSP?
I've always viewed the differences between an ASIC, ASSP & standard product like this: an ASIC is designed for one customer and often includes some of that customer's IP. An ASSP is an ASIC that gets sold to several customers, competing in the same application space. It typically does not include IP from a specific customer, or if it does, that customer gets a specific time period of exclusivity. A standard product is designed to serve many customers in many different applications. You can buy standard products from distributors.
FPGA simply describes a type of implementation -- programmable, rather than hard wired in silicon. Some FPGAs are SoCs, others are not.