将寄存器bx的内容移入寄存器ax
MOV ax, bx
为什么语法如此奇怪?
Mov ax,
(至)bx
实际上意味着move
至bx
的{{1}}内容,是否有任何历史原因以这种方式定义?
答案 0 :(得分:10)
考虑一下代码
x = 5
这可能将值5分配给x。你想要5 = x吗?
同样,您不应该尝试将英语与编码进行比较。这在历史上也发生了什么。英语可能会说这就是这个。但计算机架构师就是这样的。
基本上是以下过程:
X := Y
可以更好地概括为:
MOV X, Y
答案 1 :(得分:7)
MOV ax, bx
这意味着,ax = bx(将bx移动到ax,更确切地说,将bx复制到ax)。在此汇编语法中,第一个操作数是目标 - 这是常见的情况,例如,在C函数中:
strcpy(dest, source);
在AT& T汇编程序中,第一个操作数是源。一般来说,它看起来很奇怪,AT& T Assembler用户会因此而制造有趣的错误。
答案 2 :(得分:1)
语法:x86汇编语言有两个主要的语法分支:Intel语法,最初用于x86平台的文档,以及AT& T语法。英特尔语法在MS-DOS和Windows世界中占主导地位。在Unix / Linux世界中,两者都被使用,因为GCC以前只支持AT& T语法。