The MOV, ADD, JE, etc. instructions are simply mnemonics to the associated opcode which is output from the assembler at the assembly stage. It is the binary opcodes that are executed on the CPU architecture in question. You could write an assembler that used the word FISH to represent the MOV instruction but I doubt it would do you, or any one else for that matter, any good.
The opcodes are exposed by the CPU OEM and you must use them exactly the way they've stated if you want your programs to run on that architecture. Accordingly, Intel has a large set of opcodes that assemblers like nasm, masm, tasm, gas, etc., generate based on the mnemonics used in the source file. Similarly, ARM CPUs have opcodes as do IBM mainframes. Unfortunately for us programmers the opcodes are not the same across all architectures. This is why assembly language is considered non-portable: the source code you write for one CPU architecture will not work on a different manufacturer's CPU.
Very few people know the rhyme or reason of why the opcode is the binary number that it is but the folks at Intel sure do. But, if you are writing an assembler then you need to adhere to their way of doing things. This is also why you don't see very many cross-assemblers - attempting to manage syntactical differences in source along with the requisite differences in binary output is somewhat insane. For portability it's much better to use a higher level language ( C for example ) where you can abstract away as many of those differences as you can.
I hope I didn't confuse you further!