能力值:
( LV4,RANK:50 )
|
-
-
2 楼
路过学习~~
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
edi存放的是[EBP-48]这个堆栈指针指向的数据,在这里可能是个地址。一个复制的目的地址。
|
能力值:
( LV5,RANK:60 )
|
-
-
4 楼
记得在32位汇编中,这些es cs ss什么的段都是忽略的,因为32位地址是平坦的。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
说一点我个人的理解
mov esi, dword ptr [ebp+8] ;将堆栈ebp+8的4个字节的值送入esi(源字串数组地址)
lea edi, dword ptr [ebp-48] ;将堆栈ebp-48的4个字节的值送入edi(目的字串数组偏移地址)
push ecx
mov ecx, 0f ;字串操作次数
rep movs dword ptr es:[edi], dword ptr [esi] ;将源字串送入目的字串
pop ecx
在32位Windows平台下,CS,DS,ES和SS可以直接寻址全部的4 GB地址空间,程序开始执行的时候,CS,DS,ES和SS都已经指向了正确的描述符,在整个程序的生命周期内,程序员不必改动这些段寄存器,也不必关心它们的值究竟是多少(实际上,想改也改不了)。(这段说明引自老罗的Windows环境下32位汇编语言程序设计)
以我的理解,它是对16位寻址方式的一种继承
|
能力值:
(RANK:300 )
|
-
-
6 楼
lea edi, dword ptr [ebp-48]
相当于
mov eax,ebp
sub eax,48
mov edi,eax
edi 放的是EBP-48 的结果;
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
谢谢各位高手啦
我想问一个es:[edi] //edi = ebp-48
这个是不是就是堆栈中的地址, 也即此函数局部变量数组的首地址. 而不管ES, 也就是说数据是存到堆栈中了, 而不是那个所谓的ES段中了? 谢谢!
|
能力值:
(RANK:300 )
|
-
-
8 楼
5楼说过了。
win32 线性寻址。不使用段寄存器。当然有一些特殊功能呢还是会使用到的。通常不用理会
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
rep movs dword ptr es:[edi], dword ptr [esi]
不就是
rep movsd
?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
分不够啊, 没给分的对不起啦
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
rep movs dword ptr es:[edi], dword ptr [esi]
对类似的语句还是不太了解,最近碰到几个程序,频繁使用类似的指令。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
movs 是串指令.
将esi中的东西移动ecx个到edi中去
rep是无条件重复.
相应的指令 还有 movsb 一次移动一个字节,类似movsw一个字.
当然还有repe cmpsb 一次比较一个字节 当比较结果为真 进行下一个比较.
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
movs系列指令 我记得就这么规定的
ds:esi 源
es:edi 目的
cx 次数
rep movsb 一次一字节源向目的拷贝一字节数据 拷贝后自动调整指针到下个字符
拷贝次数由 ecx值决定 应该是这样的
实际写的时候 都是
rep movsb = rep movs byte ptr es:[edi], byte ptr [esi]
rep movsw = rep movs word ptr es:[edi], word ptr [esi]
rep movsd = rep movs dword ptr es:[edi], dword ptr [esi]
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
进来学习一下,刚开始学
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
进来学习下,
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
学习......
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
以下是我个人理解,因为我只在大学学习过16位的汇编,至于win32汇编也是刚学没多久。
首先,lea edi,dword ptr [ebp-48] 它的作用就是将ebp-48送入edi中,也就是lz理解的edi中存放的是局部数组的首地址,具体的说就是使edi指向局部数组的首地址。
其次,movs这个指令的格式是这样的
movs 目标操作数,源操作数
目标操作数寻址方式只能是es:[edi],es不能替换
|
|
|