XCHG

交換

XCHG

eXCHanGe


【構文】

XCHG src, dest

 

【オペレーション】

tmp = src;

src = dest;

dest = tmp;

 

【機能】

-

以下のとおり、srcとdestの内容を交換します。

src

dest

機能

レジスタ

レジスタ

レジスタ(src)のデータとレジスタ(dest)のデータを交換します。

メモリ

レジスタ

メモリのデータとレジスタのデータを交換します。サイズ拡張指定子が.Bおよび.UBのときは、レジスタのLSB側のバイトデータとメモリのデータを交換します。サイズ拡張指定子が.Wおよび.UWのときは、レジスタのLSB側のワードデータとメモリのデータを交換します。サイズ拡張指定子が.L以外のときは、指定した拡張方法でメモリのデータをロングワードデータに拡張し、レジスタに転送します。

 

【命令フォーマット】

構文

処理

サイズ

対象

コードサイズ

(バイト)

src

dest

XCHG src, dest

L

Rs

Rd

3

L

[Rs].memex

Rd

3 (memex == UB)

4 (memex != UB)

L

dsp:8[Rs].memex(注)

Rd

4 (memex == UB)

5 (memex != UB)

L

dsp:16[Rs].memex(注)

Rd

5 (memex == UB)

6 (memex != UB)

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

 

【フラグ変化】

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

 

【記述例】

XCHG    R1, R2
XCHG    [R1].W, R2