MOVS 内存[EDI],内存[ESI]
- 将ESI地址中的值移动到EDI指向的地址中,每次移动X字节,同时 esi、edi增加x
MOVS BYTE PTR ES:[EDI],BYTE PTR ES:[ESI] == 简写:MOVSB
MOVS WORD PTR ES:[EDI],WORD PTR ES:[ESI]== 简写:MOVSW
MOVS DWORD PTR ES:[EDI],DWORD PTR ES:[ESI]== 简写:MOVSD
STOS 内存[EDI]
- 将AL/AX/EAX的值存储到[EDI]内存中
STOS BYTE PTR ES:[EDI] 简写:STOSB
STOS WORD PTR ES:[EDI] 简写:STOSW
STOS DWORD PTR ES:[EDI] 简写:STOSD
重复操作前缀。通常会加到 MOVS STOS等指令前面,表示重复执行后面的指令,重复的次数由ECX寄存器的值决定。
可以进行如下操作:
rep movsb //重复ecx次,每次将一个字节从esi到edi
rep movsw //重复ecx次,每次将一个字从esi到edi
rep movsd //重复ecx次,每次将两个字从esi到edi
rep stosb //重复ecx次,每次将 al 传送到edi
rep stosw //重复ecx次,每次将 ax 传送到edi
rep stosd //重复ecx次,每次将 eax 传送到edi
DF标志
df标记寄存器可以做到esi和edi的增减
- DF=0 :esi和edi递增
- DF=1 : esi和edi递减
配合movs和stos的指令,可以同时指定传送后,esi和edi是往高处走还是低处走