标题:rep movs汇编指令的问题
只看楼主
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
结帖率:85.71%
已结贴  问题点数:20 回复次数:4 
rep movs汇编指令的问题
以下是vc6的disassembley 的一段代码,结构体的赋值操作。
22:       student = student1;
0040DE74   mov         ecx,8
0040DE79   lea         esi,[ebp-48h]
0040DE7C   lea         edi,[ebp-28h]
0040DE7F   rep movs    dword ptr [edi],dword ptr [esi]
我知道lea 是取地址,rep是重复,ecx,8是重复执行的次数。 movs是把esi指向的内存复制到edi指向的内存。
我这里猜想edi跟esi每次执行过后是会加4的。然后这段代码的功能是一段数据的复制。

------------------------------------------------------------------------------
不知猜想是否正确,edi esi真的加4吗,在哪里可以找到权威的集参考????比如movs , rep,esi edi这些  。
网上找的资料比较乱,我是初学者,求高手指点和给个权威参考书或网址。
搜索更多相关主题的帖子: 汇编 指令 执行 指向 内存 
2017-09-17 03:42
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
得分:20 
rep movs dword ptr [edi],dword ptr [esi] 这句中 dword ptr [edi],dword ptr [esi] 不必要
基本上 rep movsd 就可以了
rep movsd表示每次移动两字dword,si和di加或减4 (视方向标志而定)
还有两种movs
rep movsw  ;字
rep movsb  ;字节
2017-09-17 20:06
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:0 
回复 2楼 Valenciax
嗯明白了,那么
改写成如下两种形式也是对的吗?
    rep movsd ptr [edi] ,ptr[esi](这种是不是不对??)
或直接
    rep movsd(会默认使用edi 跟esi吗??)

另外,我还想看一下其他指令的权威参考,版主有没有推荐呢??

[此贴子已经被作者于2017-9-17 23:52编辑过]


跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-09-17 23:51
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
得分:0 
rep movs? 就可以, 默认是ds:esi(或si) 移到 es:edi(或di)
最权威的参考自然是intel x86的六百多页的指令手册,
https://www.
2017-09-18 20:23
sharplong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:122
专家分:121
注 册:2017-3-27
得分:0 
回复 4楼 Valenciax
受教了,十分感谢。

跟据科学研究呢,拥有一个良好的头像呢,有助于提高帖子关注度,和被友好对待的可能性:)准确来说呢,其实,我是一个演员....和兼职汽车维修员
2017-09-18 23:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480758-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.198714 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved