move the contents of the regist开发者_开发知识库er bx into the register ax
MOV ax, bx
Why is the syntax so strange?
Mov ax,
(to) bx
actually means move
contents of bx
to ax
,is there any historical reason to define it this way?
Consider a code
x = 5
This probably assigns value 5 to x. Would you like 5 = x?
Similarly, You should not try to compare the language English with coding. Thats what historically also happened. English might say move this to that. But computer architects like that to this.
So basically the process of :
X := Y
could be better summarized as :
MOV X, Y
MOV ax, bx
This means, ax = bx (move bx to ax, more exactly, copy bx to ax). In this Assembly syntax first operand is destination - this is usual case, for example, in C functions:
strcpy(dest, source);
In AT&T Assembler first operand is source. Generally, it looks strange and AT&T Assembler users make interesting bugs because of this.
Excerpt from wikipedia
Syntax: x86 assembly language has two main syntax branches: Intel syntax, originally used for documentation of the x86 platform, and AT&T syntax. Intel syntax is dominant in the MS-DOS and Windows world. In the Unix/Linux world, both are used because GCC only supported AT&T-syntax in former times.
精彩评论