刚开始学汇编都会接触到指令lea 和mov,但是这两个指令用法看起来很像,会经常误以为两者其实没有很大区别,甚至会误认为两者就是相等的,笔者本人也是很迷,而且书上对lea的讲解又十分有限,但是通过不懈的知识搜素,终于搞明白了这其中的差别,两者还是又很大不同的,所以mark一下防止忘了。
让我们一起看看下面的例子:

大家可以看到,第三行和第四行,看到右边的注释大家是不是有点明白了呢,lea代表的就是加载有效地址(load effective address),而(%rsi , %rdi , 4)代表的是以数值 %rsi + %rdi * 4 为内存地址,在内存里找到相对应的值,然而leaq 是取地址,所以取出来的地址正好是%rsi + %rdi * 4
即X(A) + 4(n*i) ,然后把其送给%rax。
接下来进入第四条语句,movl (%rax , %rcx ,4) %eax,代表的只是把 数值 %rax +%rcx +4作为内存地址,将内存里面的值取出来,mov给寄存器 %eax,其中内存里的值与地址%rax +%rcx +4没有直接关系。

总结一下
1. lea:加载有效地址

一般都是从内存里面取出 地址 传 递给寄存器,相当于C语言里面的取地址符号&
2…mov:
mov就是将一个值(这个值可能在内存,也可能在寄存器里面)传递给另外一个容器( 可以是寄存器,可以是内存),当然传递还有许多限制,在这就不一一赘述。

最后祝大家学习快乐,学习过程都可以收获到知识,yeah

汇编指令lea 和 mov 区别相关推荐

  1. windows debug下验证汇编指令中的mov指令传送数据

    一.知识储备 1.8086CPU是16位结构,有16根数据线,20根地址线.16根数据线可以一次性传送16位数据,也就是两个字节(也就是一个字)的数据. 什么是字? 在这个特定计算机中,字是其用来一次 ...

  2. 汇编指令学习(MOV,MOVSX,MOVZX,LEA,XCHG)

    一.MOV指令 1.将十六进制0x1234数值,赋值给eax寄存器 mov eax,0x1234 2.将十六进制0x123数值,赋值给内存地址为ebx mov dword [ebx],0x123 3. ...

  3. linux汇编 lea,汇编指令LEA

    LEA是微机8086/8088系列的一条指令,取自英语Load effect address--取有效地址,也就是取偏移地址.在微机8086/8088中有20位物理地址,由16位段基址向左偏移4位再与 ...

  4. S5PV210体系结构与接口02:ARM编程模型 汇编指令

    目录 1. ARM的基本设定 1.1 ARM数据类型 1.1.1 基本数据类型 1.1.2 浮点数据类型 1.1.3 存储器大小端 1.2 支持的指令集 2. Cortex-A8编程模型 2.1 处理 ...

  5. 【Android 逆向】x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )

    文章目录 一.call 子函数调用指令 二.jmp 跳转指令 三.lea 加载指令 四.mov 数据传送指令 总结 一.call 子函数调用指令 call 指令是 子函数调用指令 , 调用的指令的下一 ...

  6. 汇编指令push,mov,call,pop,leave,ret建立与释放栈的过程

    栈内的数据 栈在汇编层面是辅助实现函数调用的,每个函数调用过程在栈中被抽象成一帧 ,在老式的32位CPU架构IA32中还有固定寄存器指向当前帧底部(下图中的0x100000f4,0x100000d8) ...

  7. linux命令mov,汇编指令_Y-linuz-linux-w_新浪博客

    ARM处理器有37个寄存器,其中31个通用寄存器,6个程序状态寄存器. R0~R7为不分组的通用寄存器,R8~R14为分组寄存器---不同工作模式下寄存器不同 R13:指向堆栈栈顶指针SP R14:用 ...

  8. 32位汇编寄存器及汇编指令

    32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和 ...

  9. 寄存器和常用的汇编指令

    为了学习需要,最近查看了一下汇编,因为是个初学者很多东东基本不动,所以记录一下基本指令和寄存器,那样就会对汇编慢慢的适应,看得懂那些华丽花哨的反汇编代码了.学习这个东东基本是为了破解和逆向工程使用,因 ...

最新文章

  1. 解读|智能技术“核聚变”催生智能经济,将拉动十万亿市场
  2. HDU 6156 Palindrome Function 数位DP
  3. hive导出数据到本地文件报错解决方法
  4. 平面最接近点对问题(分治)
  5. 《JAVA与模式》之模板方法模式
  6. 上云的先行军,QQ 率先完成了20万台服务器全量上云,是怎么做到的?
  7. Java:处理 Exception 的几种实践,很优雅,值得推荐!
  8. 协程-greenlet版(python 版)
  9. cookie封装做免输入登录
  10. 小tip: 使用CSS将图片转换成黑白(灰色、置灰)[转]
  11. I/O多路复用技术详解之poll模型
  12. 移动WEB开发之Safari、QQ、UC、360浏览器的私有Meta属性
  13. Cookie的简单理解和使用
  14. LDA模型,主题聚类模型
  15. HDU6184 Counting Stars
  16. 自己DIY word2010脚注和尾注没有的格式
  17. [Mysql] 3.Mysql 数据类型
  18. 利用计算机解决问题的一般过程是怎样的,计算机解决问题的一般过程1
  19. [SinGuLaRiTy] 动态规划题目复习
  20. 前沿重器[13] | 知乎query改写思路启示

热门文章

  1. aes加密算法 java实现,AES加密算法的java实现
  2. 如何自定义模板过滤器?
  3. uni-app 微信小程序根据角色动态的更改底部tabbar
  4. 02 | 安全原则:我们应该如何上手解决安全问题?
  5. 从ChatGPT的火爆回忆6年前的硅谷之行
  6. 我们不曾向这个世界的庸俗低头!!!
  7. usb接口驱动_TCP/IP Over USB 用USB传输以太网数据,给你的MCU加个网卡
  8. 作为一名设计师我们应该如何设计好一个品牌LOGO
  9. 关于蓝牙人员定位的几个重要问题
  10. Go语言的使用结构体、指针和方法