MOVSB、MOVSW和MOVSD指令

MOVSB、MOVSW和MOVSD指令



MOVSB、MOVSW、MOVSD指令将数据从ESI指向的内存位置复制到EDI指向的内存位置

指令 功能
MOVSB 传送(复制)字节
MOVSW 传送(复制)字
MOVSD 传送(复制)双字
指令 ESI 和 EDI增加或减少的数值
MOVSB 1
MOVSW 2
MOVSD 4


使用重复前缀:这些指令只能处理一个或一对内存数值。如果加上重复前缀,指令就可以以ECX作计数器重复执行,下面为可用的重复前缀:

指令 功能
REP ECX > 0时重复
REPZ、REPE 零标志位置1 且 ECX>0时重复
REPNZ、REPNE 零标志位清零 且 ECX>0时重复

方向标志位:方向标志位的状态,会影响ESI和EDI的增加或减少。用CLD和STD指令来修改方向标志位:

  • CLD 方向标志位清零(正向)
  • STD 方向标志位置1 (反向)
方向标志位的值 对 ESI 和 EDI 的影响 地址顺序
0 增加 低到高
1 减少 高到低

示例:假设现在想从 源地址复制20个双字整数到 目标地址:

cld						;设置方向为正向
mov ecx, 20				;设置rep重复次数
mov esi, 源地址
mov edi, 目标地址		
rep movsb				;复制双字

你可能感兴趣的:(汇编语言,反汇编)