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等指令