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

本文介绍了x86汇编语言中的MOVS和STOS指令的使用方法及其简写形式。详细解释了如何通过这些指令实现内存块的移动和复制,并结合REP前缀和DF标志来高效地进行重复操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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是往高处走还是低处走

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuleo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值