MOV

転送

MOV

MOVe


【構文】

MOV.size src, dest

 

【オペレーション】

dest = src;

 

【機能】

-

以下のとおり、srcをdestに転送します。

src

dest

機能

即値

レジスタ

即値をレジスタに転送します。32ビット未満の即値が指定された場合、#UIMMはゼロ拡張を、#SIMMは符号拡張を行いレジスタに転送します。

即値

メモリ

即値を指定したサイズでメモリに転送します。指定したサイズよりもビット幅の小さい即値が指定された場合、#UIMMはゼロ拡張を、#SIMMは符号拡張を行いメモリに転送します。

レジスタ

レジスタ

レジスタ(src)のデータをレジスタ(dest)に転送します。サイズ指定子が.Bのときは、レジスタ(src)のLSB側のバイトデータをロングワードデータに符号拡張し、レジスタ(dest)に転送します。サイズ指定子が.Wのときは、レジスタ(src)のLSB側のワードデータをロングワードデータに符号拡張し、レジスタ(dest)に転送します。

レジスタ

メモリ

レジスタのデータをメモリに転送します。サイズ指定子が.Bのときは、レジスタのLSB側のバイトデータを転送します。サイズ指定子が.Wのときは、レジスタのLSB側のワードデータを転送します。

メモリ

レジスタ

メモリのデータをレジスタに転送します。サイズ指定子が.Bまたは.Wのときは、メモリのデータをロングワードデータに符号拡張し、レジスタに転送します。

メモリ

メモリ

指定したサイズでメモリ(src)のデータをメモリ(dest)に転送します。

 

【命令フォーマット】

構文

size

処理

サイズ

src

dest

コードサイズ

(バイト)

MOV.size src, dest

B/W/L

size

Rs

(Rs=R0〜R7)

dsp:5[Rd](注1)

(Rd=R0〜R7)

2

B/W/L

L

dsp:5[Rs](注1)

(Rs=R0〜R7)

Rd

(Rd=R0〜R7)

2

L

L

#UIMM:4

Rd

2

B

B

#IMM:8

dsp:5[Rd](注1)

(Rd=R0〜R7)

3

W/L

size

#UIMM:8

dsp:5[Rd](注1)

(Rd=R0〜R7)

3

L

L

#UIMM:8(注2)

Rd

3

L

L

#SIMM:8(注2)

Rd

3

L

L

#SIMM:16

Rd

4

L

L

#SIMM:24

Rd

5

L

L

#IMM:32

Rd

6

MOV.size src, dest

B/W

L

Rs

Rd

2

L

L

Rs

Rd

3

B

B

#IMM:8

[Rd]

3

B

B

#IMM:8

dsp:8[Rd](注1)

4

B

B

#IMM:8

dsp:16[Rd](注1)

5

W

W

#SIMM:8

[Rd]

3

W

W

#SIMM:8

dsp:8[Rd](注1)

4

W

W

#SIMM:8

dsp:16[Rd](注1)

5

W

W

#IMM:16

[Rd]

4

W

W

#IMM:16

dsp:8[Rd](注1)

5

W

W

#IMM:16

dsp:16[Rd](注1)

6

L

L

#SIMM:8

[Rd]

3

L

L

#SIMM:8

dsp:8[Rd](注1)

4

L

L

#SIMM:8

dsp:16[Rd](注1)

5

L

L

#SIMM:16

[Rd]

4

L

L

#SIMM:16

dsp:8[Rd](注1)

5

L

L

#SIMM:16

dsp:16[Rd](注1)

6

L

L

#SIMM:24

[Rd]

5

L

L

#SIMM:24

dsp:8[Rd](注1)

6

L

L

#SIMM:24

dsp:16[Rd](注1)

7

L

L

#IMM:32

[Rd]

6

L

L

#IMM:32

dsp:8[Rd](注1)

7

L

L

#IMM:32

dsp:16[Rd](注1)

8

B/W/L

L

[Rs]

Rd

2

B/W/L

L

dsp:8[Rs](注1)

Rd

3

B/W/L

L

dsp:16[Rs](注1)

Rd

4

B/W/L

L

[Ri, Rb]

Rd

3

B/W/L

size

Rs

[Rd]

2

B/W/L

size

Rs

dsp:8[Rd](注1)

3

B/W/L

size

Rs

dsp:16[Rd](注1)

4

B/W/L

size

Rs

[Ri, Rb]

3

B/W/L

size

[Rs]

[Rd]

2

B/W/L

size

[Rs]

dsp:8[Rd](注1)

3

B/W/L

size

[Rs]

dsp:16[Rd](注1)

4

B/W/L

size

dsp:8[Rs](注1)

[Rd]

3

MOV.size src, dest

B/W/L

size

dsp:8[Rs](注1)

dsp:8[Rd](注1)

4

B/W/L

size

dsp:8[Rs](注1)

dsp:16[Rd](注1)

5

B/W/L

size

dsp:16[Rs](注1)

[Rd]

4

B/W/L

size

dsp:16[Rs](注1)

dsp:8[Rd](注1)

5

B/W/L

size

dsp:16[Rs](注1)

dsp:16[Rd](注1)

6

B/W/L

size

Rs

[Rd+]

3

B/W/L

size

Rs

[-Rd]

3

B/W/L

L

[Rs+]

Rd

3

B/W/L

L

[-Rs]

Rd

3

注 1.

弊社の「RXファミリ アセンブラ」では、ディスプレースメントの値(dsp:5、dsp:8、dsp:16)は、サイズ指定子が“.W”のときは2の倍数、“.L”のときは4の倍数を指定してください。dsp:5には、サイズ指定子が“.W”のとき0〜62(31×2)が、“.L”のとき0〜124(31×4)が指定できます。dsp:8には、サイズ指定子が“.W”のとき0〜510(255×2)が、“.L”のとき0〜1020(255×4)が指定できます。dsp:16には、サイズ指定子が“.W”のとき0〜131070(65535×2)が、“.L”のとき0〜262140(65535×4)が指定できます。命令コードには、1/2、1/4した値が埋め込まれます。

注 2.

0〜127の範囲は、常にゼロ拡張命令コードになります。

注 3.

ポストインクリメント付きストア、プリデクリメント付きストアで、RsとRdに同じレジスタを指定した場合、アドレス更新前の値がソースとして転送されます。

注 4.

ポストインクリメント付きロード、プリデクリメント付きロードで、RsとRdに同じレジスタを指定した場合、メモリから転送されてきたデータがRdに格納されます。

 

【フラグ変化】

フラグ変化はありません。

 

【記述例】

MOV.L    #0, R2
MOV.L    #128:8, R2
MOV.L    #-128:8, R2
MOV.L    R1, R2
MOV.L    #0, [R2]
MOV.W    [R1], R2
MOV.W    R1, [R2]
MOV.W    [R1, R2], R3
MOV.W    R1, [R2, R3]
MOV.W    [R1], [R2]
MOV.B    R1, [R2+]
MOV.B    [R1+], R2
MOV.B    R1, [-R2]
MOV.B    [-R1], R2