汇编 movs stos rep df 等指令的作用

MOVS 指令

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

STOS	内存[EDI]		
  • 将AL/AX/EAX的值存储到[EDI]内存中

STOS BYTE PTR ES:[EDI] 简写:STOSB
STOS WORD PTR ES:[EDI] 简写:STOSW
STOS DWORD PTR ES:[EDI] 简写:STOSD

REP

重复操作前缀。通常会加到 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是往高处走还是低处走

posted @ 2022-10-13 23:15  hugeYlh  阅读(94)  评论(0编辑  收藏  举报  来源