CMP

比較

CMP

CoMPare


【構文】

CMP src, src2

 

【オペレーション】

src2 - src;

 

【機能】

-

src2からsrcを減算した結果にしたがって、PSWの各フラグが変化します。

 

【命令フォーマット】

構文

処理

サイズ

対象

コードサイズ

(バイト)

src

src2

CMP src, src2

L

#UIMM:4

Rs

2

L

#UIMM:8(注1)

Rs

3

L

#SIMM:8(注1)

Rs

3

L

#SIMM:16

Rs

4

L

#SIMM:24

Rs

5

L

#IMM:32

Rs

6

L

Rs

Rs2

2

L

[Rs].memex

Rs2

2(memex == UB)

3(memex != UB)

L

dsp:8[Rs].memex(注2)

Rs2

3(memex == UB)

4(memex != UB)

L

dsp:16[Rs].memex(注2)

Rs2

4(memex == UB)

5(memex == UB)

注 1.

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

注 2.

弊社の「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した値が埋め込まれます。

 

【フラグ変化】

フラグ

C

Z

S

O

変化

条件

C:符号なし演算のオーバフローが発生しなかったとき“1”、それ以外のとき“0”になります。

Z:演算結果が0のとき“1”、それ以外のとき“0”になります。

S:演算結果のMSBが“1”のとき“1”、それ以外のとき“0”になります。

O:符号付き演算のオーバフローが発生したとき“1”、それ以外のとき“0”になります。

 

【記述例】

CMP     #7, R2
CMP     R1, R2
CMP     [R1], R2