dest = source
The movsd instruction moves a double precision floating point value (64 bits) from the source value (second operand) to the destination. The source and the destination can be an XMM register or a memory location. You can not use 2 memory addresses.
movsd moves the value without inspection or conversion.
Generally you can just act like movsd moves a float from one place to another, but when you move a float from memory to an XMM register double in the register are set to 0. An XMM register is 128 bits total, while CPUs supporting AVX instructions have an additional 128 bits in each register accessible as YMM registers.
movsd xmm1, xmm2 ; move a double from xmm2 to xmm1 ; leaves the rest of xmm1 unchanged movsd xmm2, [x] ; moves a double from variable x to xmm2 ; places 1 zero double in xmm2 bits 64:127 ; leaves the rest of xmm2 alone movsd [y], xmm0 ; moves a double from xmm0 to variable y ; moves precisely 64 bits