请教lea的问题,高手才会的

wwwhhb4002 2009-03-13 12:39:05

一段反编译代码

0040FE41 |. 8D4C24 10 lea ecx, dword ptr [esp+10]
0040FE45 |. A3 70304200 mov dword ptr [423070], eax
0040FE4A |. 896C24 10 mov dword ptr [esp+10], ebp
0040FE4E |. 895C24 14 mov dword ptr [esp+14], ebx
0040FE52 |. 895C24 18 mov dword ptr [esp+18], ebx
0040FE56 |. E8 E5010000 call 00410040 ;获得虚类指针

-----------------------------

lea 的意思就是 Load Effective Address 读有效地址

1 请教这个指令 lea ecx, dword ptr [esp+10] 是什么意思?

------------------------


这是别人的解释
lea edi, [esi+4] 和 mov edi, [esi+4] 是不一样的.
前者是 esi+4 -> edi; 后者是内存 [esi+4] 处的 dword 赋给 edi

------------------------------------

lea 到底装入的是地址还是数据? 为什么说 lea edi, [esi+4] 是把 esi+4 赋值给 edi?
...全文
139 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
roadblossom 2009-03-13
  • 打赏
  • 举报
回复
up
gyk120 2009-03-13
  • 打赏
  • 举报
回复
某种意义上来说lea和mov的目的相同,都可以用作传值
lin115406828 2009-03-13
  • 打赏
  • 举报
回复
lea取的是地址,而mov取的是此地址所对应的内容!
killbug2004 2009-03-13
  • 打赏
  • 举报
回复
lea指令就是load effective address,将源操作数的地址赋给目的操作数,源操作数肯定是内存,看到这条指令,你就想着我要的是地址,lea ecx, dword ptr [esp+10] 这个看起来很复杂,源操作数是地址为esp + 10处的双字,所以这里是把地址esp+10传给ecx
ckc 2009-03-13
  • 打赏
  • 举报
回复
用c的话来说lea相当于&操作

xiaopoy 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 killbug2004 的回复:]
看到这条指令,你就想着我要的是地址[/Quote]
lea操作的是地址。源数据和目标数据分割考虑。
[esp+ 4]得注意[]的意义,建议搜索下pediy中的那个说明。
但lea操作的是地址,传递给目标地址,从源数据取得地址。
Guilty 2009-03-13
  • 打赏
  • 举报
回复
ecx=esp+10h, 汇编及格的人都知道,不需要高手,
别跟MOV比,越比越糊涂,根本就是两回事
Guilty 2009-03-13
  • 打赏
  • 举报
回复
eax=esp+10h, 汇编及格的人都知道,不需要高手,
别跟MOV比,越比越糊涂,根本就是两回事
cnzdgs 2009-03-13
  • 打赏
  • 举报
回复
lea是取地址,dword ptr [esp+10]可以看作是一个变量,这条指令就是把变量的地址取出来,放到ecx里面,地址就是esp+10。

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧