当前位置:C++技术网 > 资讯 > 最容易记错方向的mov指令,还有这么多秘密

最容易记错方向的mov指令,还有这么多秘密

更新时间:2015-09-16 21:03:49浏览次数:1+次

    以前学过汇编语言,参考的是王爽的《汇编语言》,点击书名可以去下载电子书。也就是学了一遍,也没怎么练习,本来的目的就是过一遍,需要的时候再深入学习。所以,各个知识点也学的不是很清楚。

    王爽汇编语言,王爽汇编语言第二版,王爽汇编语言电子书下载
    但是mov指令虽然简单,但是也挺头疼的。因为用的少,经常搞错方向。因为在逆向分析代码时,到处可以看到mov指令,而且分析的时候,如果方向反了,那就悲剧了。
    然后我就决定上网查一下,看看到底是怎么个语法。不查不知道,一查收获不少。看来是学的太菜了吧。竟然发现还有两个版本,而且,方向相反的。看下面说明。
    一共有两个版本,第一个版本,也就是我们最熟悉的版本,MASM版本。原来如此,我说原来学习的时候,为什么总有masm这个东西呢,原来是汇编语言的一种版本。
    在MASM版中mov的定义如下:

mov 目的地 , 始发地
     这里的方向,经常记错,最容易记反。我想这个东西只有经常用才会真的记住的。不过,还是在记一次吧。离mov最近的地方就是目的地,我理解为mov目标性很强,所以,先写出目的地,确定了目的地后,然后发兵进攻。好了,这样一来,我想应该不会搞错了吧。这里是我帮助记忆的,没有科学依据的。如果你觉得这个也可以帮助你记住方向,那就拿去吧。

    然后还有一个版本,就是AT&T,这个版本的mov定义如下

movx 始发地,目的地
     为什么多了一个x呢,原来查资料发现,这个x表示的是操作数的宽度,有l、w、b、q,例如movl操作数的宽度为32位,movb操作数宽度为8位。
    然后得知,AT&T版多了一个x是因为它不能自动识别操作数的宽度,所以要加上一个指示操作数宽度的。而MASM版本可以自动识别,所以就不用加了。
    至于其他方面的,学习到了再说吧,先把这个理清楚,不再搞错再说。