Strictly speaking a MOV (Move) instruction doesn't actually move the data, it simply places a copy of the source data into the destination location.
It is a very useful instruction, because it handles data-type conversion automatically - e.g. if you MOV a floating-point value into an integer-type destination, the result is rounded. The rounding method depends which PLC family you are using.
Conversely, you can use COP (Copy) to move data around (again the source is left unchanged), but COP doesn't take heed of any data-type differences, it just performs a byte-for-byte copy from source to destination. This does, of course, cause problems (e.g. data corruption) if the source and destination locations are different data-types.
COP, on a single element, is faster to execute than MOV, simply because there is no data-type checking or conversion involved.
COP can also handle multiple elements of arrays, MOV will only copy a single element. To copy multiple elements in a MOV-like fashion requires the FAL instruction.
An advanced version of COP in Logix5000 systems, is CPS (Copy Synchronous), which doesn't allow the processor to interrupt the COPying instruction until it has completed. COP can be interrupted by System Overhead Time-Slice, which can cause data-set fragmentation.
Programmers use MOV, FAL, COP, and CPS as best fits the application.