汇编语言中的rep指令的作用
0040106055pushebp004010618BECmovebp,esp0040106383EC48subesp,48h0040106653pushebx00401...
00401060 55 push ebp
00401061 8B EC mov ebp,esp
00401063 83 EC 48 sub esp,48h
00401066 53 push ebx
00401067 56 push esi
00401068 57 push edi
00401069 8D 7D B8 lea edi,[ebp-48h]
0040106C B9 12 00 00 00 mov ecx,12h
00401071 B8 CC CC CC CC mov eax,0CCCCCCCCh
00401076 F3 AB rep stos dword ptr [edi]
请问高手们,在main函数的反汇编代码中的一段代码,能告诉我这段代码有什么作用吗? 展开
00401061 8B EC mov ebp,esp
00401063 83 EC 48 sub esp,48h
00401066 53 push ebx
00401067 56 push esi
00401068 57 push edi
00401069 8D 7D B8 lea edi,[ebp-48h]
0040106C B9 12 00 00 00 mov ecx,12h
00401071 B8 CC CC CC CC mov eax,0CCCCCCCCh
00401076 F3 AB rep stos dword ptr [edi]
请问高手们,在main函数的反汇编代码中的一段代码,能告诉我这段代码有什么作用吗? 展开
4个回答
展开全部
1.rep movsd
每次ecx!=0便执行movsd ,然后ecx=ecx-1 movsd移动ds:[si] 到es:[di],在32位汇编下可以用esi代替si,edi代替di
2.同时由于在一般exe中ds = es
程序起始位置所以另esi = offset @s1就可以找到变量s1 ,edi= offset @s2就可以找到变量s2 。
3.movsd此类指令有个性质,当标志位d=0时执行一次esi = esi
+1,edi= edi+ 1
d=1时执行一次esi = esi +1,edi= edi+ 1
所以此段指令的含义是从s1复制ecx个dword到s2。
每次ecx!=0便执行movsd ,然后ecx=ecx-1 movsd移动ds:[si] 到es:[di],在32位汇编下可以用esi代替si,edi代替di
2.同时由于在一般exe中ds = es
程序起始位置所以另esi = offset @s1就可以找到变量s1 ,edi= offset @s2就可以找到变量s2 。
3.movsd此类指令有个性质,当标志位d=0时执行一次esi = esi
+1,edi= edi+ 1
d=1时执行一次esi = esi +1,edi= edi+ 1
所以此段指令的含义是从s1复制ecx个dword到s2。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
stos dword ptr [edi]
将此指令执行12次(根据ECX的值重复执行某行指令)
如果用汇编指令来描述他的作用的话就是
s: stos dword ptr [edi]
loop s
将此指令执行12次(根据ECX的值重复执行某行指令)
如果用汇编指令来描述他的作用的话就是
s: stos dword ptr [edi]
loop s
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般都是用来循环赋值
比如说把一段内存拷到另一段里面去
比如说复制一段字符串到另一段里面去
比如说把一段内存拷到另一段里面去
比如说复制一段字符串到另一段里面去
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询