首页
社区
课程
招聘
未解决 [求助]lea与mov汇编命令的用法
发表于: 2021-1-26 14:17 3989

未解决 [求助]lea与mov汇编命令的用法

2021-1-26 14:17
3989
1
2
3
4
5
6
7
8
asm
      //   lea     eax, [ebp + 8];
       mov     eax, ebp + 8;
       lea     eax, [eax];
       mov     esp, ebp;
       pop     ebp;
       ret;
 end;

上述 代码中,用
lea eax,[ebp+8];
得到的返回值。和
mov eax,ebp + 8;
lea eax,[eax];
得到的返回值不一样。
请问这两句有什么不同?
mov,lea,中括号[ ] 在汇编中的用处和用法到底如何?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2021-1-26 14:21 被haijie编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 3754
活跃值: (5916)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
2
lea eax,[ebp+8];  结果为 eax=ebp+8 一般用lea 可以执行一些计算  计算一些偏移  例如此处就是如此
mov eax,ebp + 8; 这一句语法不正确 编译过不去
lea eax,[eax]; 这句结果为eax=eax  
2021-1-26 14:33
0
雪    币: 5
活跃值: (374)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
 lea     eax, [ebp + 8];是返回ebp指针的值+8
mov     eax, ebp + 8;是返回ebp指针+8的值???
2021-1-26 16:23
0
雪    币: 2
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
LEA是寻址指令,不做读取数据,只将目标地址放入目标寄存器
MOV是读取/写入目标地址/寄存器的数据。是将数据放入目标寄存器/内存
2021-1-26 16:55
0
雪    币: 193
活跃值: (308)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
mov eax, dword [ebp+0x08]
mov eax, dword [eax]
add eax, 0x08
越来越糊涂了,那上面这几句是做了什么事情?
2021-1-26 17:12
0
雪    币: 4
活跃值: (346)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
EBP+0x8应该是一个二重指针
mov eax, dword [ebp+0x08]解引用一次剩下一层
mov eax, dword [eax]解引用两次取到值
add eax, 0x08 把这个值+8

2021-1-26 17:20
0
雪    币: 6245
活跃值: (666)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
haijie mov eax, dword [ebp+0x08] mov eax, dword [eax] add eax, 0x08 越来越糊涂了,那上面这几句是做了什么事情?
ebp+0x80处的内存数据是个地址
2021-1-27 00:08
0
雪    币: 2
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
haijie mov eax, dword [ebp+0x08] mov eax, dword [eax] add eax, 0x08 越来越糊涂了,那上面这几句是做了什么事情?
void func(PDWORD arg1)
{
    DWORD a0 = *arg1 + 8;
}
2021-1-27 00:09
0
雪    币: 2674
活跃值: (2304)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
应该是:
lea eax,[ebp+8]

mov eax,[ebp + 8]
lea eax,[eax]
不同吧!没有: mov reg, reg+imm这个写法。
前者是让eax保存ebp+8,后者是让eax,保存ebp+8所指向地址处的4字节值
2021-1-27 10:35
0
雪    币: 7150
活跃值: (3922)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
lea eax,[ebp+8]

mov eax,ebp
add eax,8
2021-2-16 09:07
0
雪    币: 4378
活跃值: (4368)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11

lea 是取地址,用于取数据指针  如  a = &b
mov 是赋值                           如  a = 1 ; a = b;

最后于 2021-2-16 09:34 被Mxixihaha编辑 ,原因:
2021-2-16 09:31
1
雪    币: 772
活跃值: (992)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
mov eax,eax
意思是 赋值。
mov eax,【eax】
意思是 [] 内做为指针,将其内值赋值给前面。
2021-2-17 23:02
0
雪    币: 193
活跃值: (308)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
ffashi mov eax,eax 意思是 赋值。 mov eax,【eax】 意思是 [] 内做为指针,将其内值赋值给前面。
谢谢!
2021-4-24 18:23
0
游客
登录 | 注册 方可回帖
返回
//