←前ページへ :  INDEX :  次ページへ→


7-2.MOVS? ( Move String ) :ストリングの移動

MOVSB ( Move String Bytes ) :ストリングのバイト移動

MOVSB

   動作:[DS:SI]の内容1バイトを[ES:DI]に転送し、
          DF=1の時は、SI,DIを1減らす。
          DF=0の時は、SI,DIを1増やす。
  影響を受けるフラグ:なし

MOVSW ( Move String Words ) :ストリングのワード移動

MOVSW

   動作:[DS:SI]の内容2バイトを[ES:DI]に転送し、
          DF=1の時は、SI,DIを2減らす。
          DF=0の時は、SI,DIを2増やす。
  影響を受けるフラグ:なし

MOVSD ( Move String Doublewords ) :ストリングのダブルワード移動

MOVSD	(80386以上)

   動作:[DS:SI]の内容4バイトを[ES:DI]に転送し、
          DF=1の時は、SI,DIを4減らす。
          DF=0の時は、SI,DIを4増やす。
  影響を受けるフラグ:なし
   上のニーモニック表の通り、「MOVS?」命令は転送を行う。メモリーの転送後、 SI,DIが増えるか減るかは、DF(フラグ)によって変わる。DFの設定は後述する。また、この命令だけでは1度に1バイト、2バイト、4バイトしか転送できない。これでは不便なので、次ページの「REP」命令で、連続して転送を行う。

ストリングの移動 【86】
【書式】
 MOVS  {ES:}dest,{segreg:}source
 dest   = mem    source = mem
【フラグ】
OF DF IF TF SF ZF ?? AF ?? PF ?? CF
【動作】
32ビット属性のセグメントの場合、以下のSIはESIに、DIはEDIに、CXはECXになります。
source の内容をdest にコピーします。
dest で示される ES:[DI] source で示される DS:[SI]
SIとDIをオペランドのサイズに従って増減します。 DFが0ならば増加し、DFが1ならば減少します。
SISI ± オペランドのサイズ
DIDI ± オペランドのサイズ
【備考】
  • オペランドは省略できず、sourcedest は同じサイズでなければいけません。
  • オペランドが指定されていてもセグメントを変更しない場合、source のアドレスは常にDS:[SI]で、dest は常にES:[DI]で指定されます。 source のセグメントは変更可能です。
  • 繰り返し用のREPプレフィックス命令が使用できます。 CXには繰り返し回数を設定します。

←前ページへ :  INDEX :  次ページへ→