首页
社区
课程
招聘
[求助]lea与mov汇编命令的用法
2021-1-26 14:17 3766

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

2021-1-26 14:17
3766
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,中括号[ ] 在汇编中的用处和用法到底如何?


阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

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

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

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

mov eax,ebp
add eax,8
雪    币: 3752
活跃值: (3768)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mxixihaha 2021-2-16 09:31
11
1

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

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