我正在查看Intel-x86程序跟踪,并遇到了此说明

REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:


我知道

REP MOVS


使MOV指令运行ECX寄存器中的值指定的次数,在本例中为0x2b。

我知道

BYTE PTR


在确定信息的大小,在这种情况下只是一个字节。

我知道

ES:[EDI]


告诉将BYTE PTR DS:中的所有内容移至EDI指向的地址。

我不知道逗号后面的部分是什么。

BYTE PTR DS:


问题:

PTR指令为什么起作用?为什么不只是

REP MOVS BYTE ES:[EDI]. BYTE DS:


ES和DS分别对应什么?

谢谢

最佳答案

指令似乎还没有结束。我今天刚在OllyDBG中碰到了该指令,并且我可以调整指令列的大小以显示其余指令。

00499B3A  |. F3:A4          |REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]


现在我们知道了完整的指令,但是我仍然不知道该指令的作用。因此,我从here中取出了Intel指令集参考手册,并搜索了操作码F3:A4

在手册中,该操作码描述如下:


将(E)CX字节从DS:[(E)SI]移到ES:[(E)DI]。

07-24 09:46
查看更多