关于装配中的mov

时间:2010-09-16 15:02:08

标签: assembly

将寄存器bx的内容移入寄存器ax

MOV ax, bx

为什么语法如此奇怪?

Mov ax,(至)bx实际上意味着movebx的{​​{1}}内容,是否有任何历史原因以这种方式定义?

3 个答案:

答案 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)

摘自wikipedia

语法:x86汇编语言有两个主要的语法分支:Intel语法,最初用于x86平台的文档,以及AT& T语法。英特尔语法在MS-DOS和Windows世界中占主导地位。在Unix / Linux世界中,两者都被使用,因为GCC以前只支持AT& T语法。