Can you clarify your question? Especially what do you mean by "move"
MOV instruction basically moves data... well copies, from one location to another. Various types and variations of MOV instructions determine how, where from and where to are the data moved.
For example, you can move data from one register (a small storage used by the CPU) to another, or from a register to a memory location or even some IO port, in which case the MOV instruction can also generate additional signals that indicate that a new value was outputted on given IO port.
You most commonly encounter to ways of selecting a memory cell when moving data from/to memory. There's direct addressing and indirect addressing.
Direct addressing simply specifies the address right away, so let's say, you want to move some value from/to memory cell with address 234. It directly determines which cell to use.
Indirect addressing is quite powerful though, it basically uses some other memory location (or usually a register) to determine the address. Let's say you store the address in register called R0 (you can substitute anything you want, it's after all, just a name). So the MOV instruction will first look into t he register R0, read the value stored there and use that as an address of the memory cell it will store/load data to/from.
This is particularly useful in loops where you can increment R0 and process a whole memory region or even calculate the address based on some other values.
Some processors also have multiple memories, for example separated program and data memory and also external data memory, so they can have three versions of MOV instructions for each type of memory.
I recommend looking this up in the documentation of specific processor, because essentially it's all just moving data around and documentation tells you what combination of locations you can use or any side effects.
For example the processor might not supporting moving data from one memory location to another with a single MOV, so you have to first move it from a memory location to a register and then from this register to the target memory location.
Also there might be special MOV instructions, for example x86 has MOV instructions that copy data from register AX to EAX, which is basically extension of a 16-bit value to a 32-bit value and the type of the instruction determines how is this expansion done.
Best way to learn more is to just look at the instruction list and look what individual instructions do, you don't really need to remember them much, just have a hunch that they exist and if you happen to need them, you can always look them up in the instruction list and with enough experience with given platform, you actually end up remembering them all.
Don't fixate on specific instructions though, rather build a generic knowledge and understanding of how it works, so you can adapt yourself to different architectures with ease (unless it's one of my experimental ones
![Tongue Tongue](https://sinister.ly/images/smilies/set/tongue.png)
).