countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2023 年 3 月 18 日
X68000 LIBRARY > 資料室 > 命令セットリファレンス(準備中) > C > CMP

CMP

CMP

比較 (こんぷ)


CMP.B #<data>,<ea>

68000/68010 の命令 CMPI.B #<data>,<ea> の別名

命令コード

アドレス1514131211109876543210
+00000110000モードレジスタr
+200000000バイトデータ

アドレッシングモードと実行時間

モードレジスタr<ea>6800068010
010r(Ar)12(3/0)12(3/0)
1(Ar)+
100-(Ar)14(3/0)14(3/0)
1(d16,Ar)16(4/0)16(4/0)
10(d8,Ar,Xn)18(4/0)18(4/0)
(d8,Ar,Xn*sf)--
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W16(4/0)16(4/0)
1(xxx).L20(5/0)20(5/0)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. バイトの <data> を Yb とします。
  2. <ea> が指すバイト(Dr のとき最下位バイト)を読み出して Xb とします。
  3. Xb から Yb を引いた結果を Zb とします。
  4. 結果に応じてフラグを操作します。

68000/68010 は PC 相対を指定できません。


CMP.B #<data>,<ea>

68020/68030/68040/68060 の命令 CMPI.B #<data>,<ea> の別名

命令コード

アドレス1514131211109876543210
+00000110000モードレジスタr
+200000000バイトデータ

アドレッシングモードと実行時間

モードレジスタr<ea>68020680306804068060
010r(Ar)🚧🚧🚧🚧
1(Ar)+
100-(Ar)
1(d16,Ar)
10(d8,Ar,Xn)----
(d8,Ar,Xn*sf)🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W
1(xxx).L
10(d16,PC)
1(d8,PC,Xn)----
(d8,PC,Xn*sf)🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. バイトの <data> を Yb とします。
  2. <ea> が指すバイト(Dr のとき最下位バイト)を読み出して Xb とします。
  3. Xb から Yb を引いた結果を Zb とします。
  4. 結果に応じてフラグを操作します。

68020/68030/68040/68060 は PC 相対を指定できます。


CMP.W #<data>,<ea>

68000/68010 の命令 CMPI.W #<data>,<ea> の別名

命令コード

アドレス1514131211109876543210
+00000110001モードレジスタr
+2ワードデータ

アドレッシングモードと実行時間

モードレジスタr<ea>6800068010
010r(Ar)12(3/0)12(3/0)
1(Ar)+
100-(Ar)14(3/0)14(3/0)
1(d16,Ar)16(4/0)16(4/0)
10(d8,Ar,Xn)18(4/0)18(4/0)
(d8,Ar,Xn*sf)--
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W16(4/0)16(4/0)
1(xxx).L20(5/0)20(5/0)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. ワードの <data> を Yw とします。
  2. <ea> が指すワード(Dr のとき下位ワード)を読み出して Xw とします。
  3. Xw から Yw を引いた結果を Zw とします。
  4. 結果に応じてフラグを操作します。

68000/68010 は PC 相対を指定できません。


CMP.W #<data>,<ea>

68020/68030/68040/68060 の命令 CMPI.W #<data>,<ea> の別名

命令コード

アドレス1514131211109876543210
+00000110001モードレジスタr
+2ワードデータ

アドレッシングモードと実行時間

モードレジスタr<ea>68020680306804068060
010r(Ar)🚧🚧🚧🚧
1(Ar)+
100-(Ar)
1(d16,Ar)
10(d8,Ar,Xn)----
(d8,Ar,Xn*sf)🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W
1(xxx).L
10(d16,PC)
1(d8,PC,Xn)----
(d8,PC,Xn*sf)🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. ワードの <data> を Yw とします。
  2. <ea> が指すワード(Dr のとき下位ワード)を読み出して Xw とします。
  3. Xw から Yw を引いた結果を Zw とします。
  4. 結果に応じてフラグを操作します。

68020/68030/68040/68060 は PC 相対を指定できます。


CMP.L #<data>,<ea>

68000/68010 の命令 CMPI.L #<data>,<ea> の別名

命令コード

アドレス1514131211109876543210
+00000110010モードレジスタr
+2ロングワードデータの上位ワード
+4ロングワードデータの下位ワード

アドレッシングモードと実行時間

モードレジスタr<ea>6800068010
010r(Ar)20(5/0)20(5/0)
1(Ar)+
100-(Ar)22(5/0)22(5/0)
1(d16,Ar)24(6/0)24(6/0)
10(d8,Ar,Xn)26(6/0)26(6/0)
(d8,Ar,Xn*sf)--
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W24(6/0)24(6/0)
1(xxx).L28(7/0)28(7/0)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. ロングワードの <data> を Yl とします。
  2. <ea> が指すロングワード(Dr のとき全体)を読み出して Xl とします。
  3. Xl から Yl を引いた結果を Zl とします。
  4. 結果に応じてフラグを操作します。

68000/68010 は PC 相対を指定できません。


CMP.L #<data>,<ea>

68020/68030/68040/68060 の命令 CMPI.L #<data>,<ea> の別名

命令コード

アドレス1514131211109876543210
+00000110010モードレジスタr
+2ロングワードデータの上位ワード
+4ロングワードデータの下位ワード

アドレッシングモードと実行時間

モードレジスタr<ea>68020680306804068060
010r(Ar)🚧🚧🚧🚧
1(Ar)+
100-(Ar)
1(d16,Ar)
10(d8,Ar,Xn)----
(d8,Ar,Xn*sf)🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W
1(xxx).L
10(d16,PC)
1(d8,PC,Xn)----
(d8,PC,Xn*sf)🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. ロングワードの <data> を Yl とします。
  2. <ea> が指すロングワード(Dr のとき全体)を読み出して Xl とします。
  3. Xl から Yl を引いた結果を Zl とします。
  4. 結果に応じてフラグを操作します。

68020/68030/68040/68060 は PC 相対を指定できます。


CMP.B <ea>,Dq

68000/68010/68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+01011レジスタq000モードレジスタr

アドレッシングモードと実行時間

モードレジスタr<ea>680006801068020680306804068060
000rDr4(1/0)4(1/0)🚧🚧🚧🚧
1(Ar)8(2/0)8(2/0)
1(Ar)+
100-(Ar)10(2/0)10(2/0)
1(d16,Ar)12(3/0)12(3/0)
10(d8,Ar,Xn)14(3/0)14(3/0)----
(d8,Ar,Xn*sf)--🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W12(3/0)12(3/0)
1(xxx).L16(4/0)16(4/0)
10(d16,PC)12(3/0)12(3/0)
1(d8,PC,Xn)14(3/0)14(3/0)----
(d8,PC,Xn*sf)--🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)
100#<data>8(2/0)8(2/0)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. <ea> が指すバイト(Dr のとき最下位バイト)を読み出して Yb とします。
  2. Dq の最下位バイトを読み出して Xb とします。
  3. Xb から Yb を引いた結果を Zb とします。
  4. 結果に応じてフラグを操作します。

CMP.W <ea>,Dq

68000/68010/68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+01011レジスタq001モードレジスタr

アドレッシングモードと実行時間

モードレジスタr<ea>680006801068020680306804068060
000rDr4(1/0)4(1/0)🚧🚧🚧🚧
1Ar
10(Ar)8(2/0)8(2/0)
1(Ar)+
100-(Ar)10(2/0)10(2/0)
1(d16,Ar)12(3/0)12(3/0)
10(d8,Ar,Xn)14(3/0)14(3/0)----
(d8,Ar,Xn*sf)--🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W12(3/0)12(3/0)
1(xxx).L16(4/0)16(4/0)
10(d16,PC)12(3/0)12(3/0)
1(d8,PC,Xn)14(3/0)14(3/0)----
(d8,PC,Xn*sf)--🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)
100#<data>8(2/0)8(2/0)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. <ea> が指すワード(Dr のとき下位ワード)を読み出して Yw とします。
  2. Dq の下位ワードを読み出して Xw とします。
  3. Xw から Yw を引いた結果を Zw とします。
  4. 結果に応じてフラグを操作します。

CMP.L <ea>,Dq

68000/68010/68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+01011レジスタq010モードレジスタr

アドレッシングモードと実行時間

モードレジスタr<ea>680006801068020680306804068060
000rDr6(1/0)6(1/0)🚧🚧🚧🚧
1Ar
10(Ar)14(3/0)14(3/0)
1(Ar)+
100-(Ar)16(3/0)16(3/0)
1(d16,Ar)18(4/0)18(4/0)
10(d8,Ar,Xn)20(4/0)20(4/0)----
(d8,Ar,Xn*sf)--🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W18(4/0)18(4/0)
1(xxx).L22(5/0)22(5/0)
10(d16,PC)18(4/0)18(4/0)
1(d8,PC,Xn)20(4/0)20(4/0)----
(d8,PC,Xn*sf)--🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)
100#<data>14(3/0)14(3/0)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. <ea> が指すロングワード(Dr のとき全体)を読み出して Yl とします。
  2. Dq の全体を読み出して Xl とします。
  3. Xl から Yl を引いた結果を Zl とします。
  4. 結果に応じてフラグを操作します。

CMP.W <ea>,Aq

68000/68010/68020/68030/68040/68060 の命令 CMPA.W <ea>,Aq の別名

命令コード

アドレス1514131211109876543210
+01011レジスタq011モードレジスタr

アドレッシングモードと実行時間

モードレジスタr<ea>680006801068020680306804068060
000rDr6(1/0)6(1/0)🚧🚧🚧🚧
1Ar
10(Ar)10(2/0)10(2/0)
1(Ar)+
100-(Ar)12(2/0)12(2/0)
1(d16,Ar)14(3/0)14(3/0)
10(d8,Ar,Xn)16(3/0)16(3/0)----
(d8,Ar,Xn*sf)--🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W14(3/0)14(3/0)
1(xxx).L18(4/0)18(4/0)
10(d16,PC)14(3/0)14(3/0)
1(d8,PC,Xn)16(3/0)16(3/0)----
(d8,PC,Xn*sf)--🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)
100#<data>10(2/0)10(2/0)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. <ea> が指すワード(Dr のとき下位ワード)を読み出して Yw とします。
  2. Yw をロングワードに符号拡張したものを Yl とします。
  3. Aq の全体を読み出して Xl とします。
  4. Xl から Yl を引いた結果を Zl とします。
  5. 結果に応じてフラグを操作します。

CMP.L <ea>,Aq

68000/68010/68020/68030/68040/68060 の命令 CMPA.L <ea>,Aq の別名

命令コード

アドレス1514131211109876543210
+01011レジスタq111モードレジスタr

アドレッシングモードと実行時間

モードレジスタr<ea>680006801068020680306804068060
000rDr6(1/0)6(1/0)🚧🚧🚧🚧
1Ar
10(Ar)14(3/0)14(3/0)
1(Ar)+
100-(Ar)16(3/0)16(3/0)
1(d16,Ar)18(4/0)18(4/0)
10(d8,Ar,Xn)20(4/0)20(4/0)----
(d8,Ar,Xn*sf)--🚧🚧🚧🚧
(bd,Ar,Xn*sf)
([bd,Ar,Xn*sf],od)
([bd,Ar],Xn*sf,od)
1000(xxx).W18(4/0)18(4/0)
1(xxx).L22(5/0)22(5/0)
10(d16,PC)18(4/0)18(4/0)
1(d8,PC,Xn)20(4/0)20(4/0)----
(d8,PC,Xn*sf)--🚧🚧🚧🚧
(bd,PC,Xn*sf)
([bd,PC,Xn*sf],od)
([bd,PC],Xn*sf,od)
100#<data>14(3/0)14(3/0)

コンディションコード

フラグ入力出力説明
X使用しない変化しない
N変化する結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
Vオーバーフローしたときセット、さもなくばクリア
Cキャリーがあるときセット、さもなくばクリア

解説

  1. <ea> が指すロングワード(Dr のとき全体)を読み出して Yl とします。
  2. Aq の全体を読み出して Xl とします。
  3. Xl から Yl を引いた結果を Zl とします。
  4. 結果に応じてフラグを操作します。