MOV is probably the first instruction everyone learns while learning ASM.
Just now I encountered a book Assembly Language Programming in GNU/Linux for IA32 Architectures By Rajat Moona which says:
alt text http://i.imagehost.org/0897/mov.gif
But I learnt that it is MOV dest, src
. Its like "Load dest
with src
". Even Wiki says the same.
I'm not saying that the author is wrong. I know that he is right. But what am I missing here?
btw.. he is using GCC's as
to assemble these instructions. But that shouldn't change the instruction syntax right?
There are two distinct types of assembly language syntax - Intel and AT&T syntax. You can find a comparison of both on Wikipedia's assembly language page.
Chances are your book uses the AT&T syntax, where the source operand comes before the destination.
Yes, as/gas use AT&T syntax that uses the order src,dest. MASM, TASM, NASM, etc. all use the order 'dest, src". As it happens, AT&T syntax doesn't fit very well with Intel processors, and (at least IMO) is a nearly unreadable mess. E.g.
movzx
comes out particularly bad.mov dest, src
is called Intel syntax.mov src, dest
is called AT&T syntax.UNIX assemblers including the GNU assembler uses AT&T syntax, all other x86 assemblers I know of uses Intel syntax. You can read up on the differences on wikipedia.