REP——重复指令

REP指令:按照计数寄存器(ECX)中指定的次数重复执行字符串指令

如:

  MOV ECX,10  ——表示当前ECX中存储的循环次数是10(16进制),就是如果执行循环的话会执行16次(10进制)

  REP MOVSD  ——表示重复执行MOVSD指令ECX中存储的值(16)次。它不会去找EAX,EDX,EBS。只会去找ECX

            每次循环ECX的值都会减一

例:

(1)EAX&ESI&EDI存的值分别是:

(2)ESI和EDI存储的地址中的数据分别是:

  • ESI及向后16个双字都存储了 0000 0000:

    

  • EDI及向后16个双字(DWORD)都不是0000 0000:

   

(3)执行的指令是:REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]                           (REP MOVSD)

(4)执行结果是:

  

(5)相应的EXC&ESI&EDI的值:

  

可以看到EDI及向后16个双字均复制为ESI及向后的16个双字,且ECS的值在执行完REP指令后变成了0.

 或者:REP STOSD等指令

  

原文地址:https://www.cnblogs.com/codexlx/p/13246235.html