EDX is multiplied by four, added to EAX, a 4 byte value is read from memory at that address, and placed into ECX.
MOV, in general, doesn't perform arithmetic, unless it's address calculation.
In your particular case: edx = 3, eax = 0x100, temporary_address_in_CPU_during_mov = eax + edx * 4 = 0x100 + 3*4 = 0x10C. Value in memory at address 0x10C is 0x11.
This address arithmetic can be used itself through lea instruction, when the CPU will do the address math, but instead of loading value from memory it will just store the calculated address, so:
leal (%eax, %edx, 4), %ecx
will load ecx with value 0x10C (without accessing memory). This is sometimes "tricked" for doing simple arithmetic, like eax = 5*eax : lea (eax,eax,4),eax (may be faster than imul and doesn't change flag register, sometimes handy).