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


MOV命令

2-1.MOV命令 ( Move Data ) :データの移動

  MOV命令とは、一番基本的で、一番頻繁に使われる命令である。どんなことをするかというとデータの複写である。機能は「複写」と言うが、「転写する」もしくは「転送する」という。すなわち、レジスタからメモリーに、メモリーからレジスタに、ある数字をレジスタもしくはメモリーにコピーする事を言う。ただし、メモリーからメモリーへの転写はできない。これは、アドレスバスが20bit(32bitCPUは32bit)であり、一度にアクセスできるメモリーのアドレスを1つ分しか指定できないからである。

  MOV命令は2つの引数を指定して使う。この引数のことをアセンブラでは「オペランド」と呼ぶ。実際には以下のような感じで使用する。

MOV ( Move Data ) :データの移動

MOV	DEST,SRC
    動作:DEST←SRC
    影響を受けるフラグ:なし
    DEST:レジスタ、メモリー
    SRC :レジスタ、メモリー、即値(ただしメモリー、メモリーの組み合わせは除く)

「フラグ」については後で述べる。


  MOV命令で転送できるのは、バイト(8bit)、ワード(2bytes)、ダブルワード(4bytes,32bitCPUのみ) である。
MOV AX,BX ・・・ BXレジスタの内容をAXに代入せよ
MOV AL,10 ・・・ ALレジスタに10を代入せよ
  ここで、以下の点に注意しなければならない。
  • メモリー間の転送はダメ
  • 転送元と転送先の大きさは同じ容量の入れ物でなければならない
  • セグメントレジスタ間の転写、セグメントレジスタへ即値の転写はできない
  では次ページから実際の使い方や、注意事項を説明していく。

 
SRC Sourceの略で、「水源(地), ; 出所, 出典; 原因」を意味し、この場合はコピーもとを意味します。
DEST destinationの略で、「目的(地), 行き先, あて先」を意味し、ここではコピー先を意味します。

 

MOV Move Data
データの移動 【86】
【書式】
 MOV  dest,source
 dest   = reg/mem/segreg   source = reg/mem/imm/segreg
【フラグ】
OF DF IF TF SF ZF ?? AF ?? PF ?? CF
【動作】
source の内容をdest にコピーします。
destsource
【備考】
  • destsource のサイズは等しくなければいけません。 destsource が共にメモリ オペランドの指定はできません。 また、dest がsegregの場合、source にimmは指定できません。
  • dest がSSの場合、この直後の1命令の実行が終了するまで、すべての割り込みは保留となります。 このために次の命令でSP(ESP)の設定を行えば、SSとSP(ESP)を正常に変更することを保証します。 但し、実際のところ、スタック領域の設定ではLSS命令の方が適しています。
  • 0〜3の範囲のセレクタをセグメント レジスタに取得しても、参照されなければ例外割り込みは発生しません。

 

MOV Move Data for Special Register

特殊レジスタと汎用レジスタ間でのデータ移動 【386】
【書式】
 MOV  dest,source
 dest   = reg32/                   [general register]           
        = CRO/CR2/CR3/             [control register]          
        = DR0/DR1/DR2/DR3/DR6/DR7/ [debug register]          
        = TR3/TR4/TR5/TR6/TR7      [test register]   
 source = reg32/                   [general register]          
        = CRO/CR2/CR3/             [control register]          
        = DRO/DR1/DR2/DR3/DR6/DR7/ [debug register]          
        = TR3/TR4/TR5/TR6/TR7      [test register]
【フラグ】
OF DF IF TF SF ZF ?? AF ?? PF ?? CF
【動作】
source の内容をdest にコピーします。
destsource
【備考】
  • オペランドのサイズはダブルワード(4バイト)で、常に一方は汎用レジスタです。

 


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