更新日: 2023 年 3 月 18 日
CMP
CMP
比較 (こんぷ)
CMP.B #<data>,<ea>
68000/68010 の命令 CMPI.B #<data>,<ea> の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | モード | レジスタr |
+2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | バイトデータ |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 |
0 | 1 | 0 | r | (Ar) | 12(3/0) | 12(3/0) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 14(3/0) | 14(3/0) |
1 | (d16,Ar) | 16(4/0) | 16(4/0) |
1 | 0 | (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) |
1 | 0 | 0 | 0 | (xxx).W | 16(4/0) | 16(4/0) |
1 | (xxx).L | 20(5/0) | 20(5/0) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | オーバーフローしたときセット、さもなくばクリア |
C | キャリーがあるときセット、さもなくばクリア |
解説
- バイトの <data> を Yb とします。
- <ea> が指すバイト(Dr のとき最下位バイト)を読み出して Xb とします。
- Xb から Yb を引いた結果を Zb とします。
- 結果に応じてフラグを操作します。
68000/68010 は PC 相対を指定できません。
CMP.B #<data>,<ea>
68020/68030/68040/68060 の命令 CMPI.B #<data>,<ea> の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | モード | レジスタr |
+2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | バイトデータ |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68020 | 68030 | 68040 | 68060 |
0 | 1 | 0 | r | (Ar) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) |
1 | (d16,Ar) |
1 | 0 | (d8,Ar,Xn) | - | - | - | - |
(d8,Ar,Xn*sf) | 🚧 | 🚧 | 🚧 | 🚧 |
(bd,Ar,Xn*sf) |
([bd,Ar,Xn*sf],od) |
([bd,Ar],Xn*sf,od) |
1 | 0 | 0 | 0 | (xxx).W |
1 | (xxx).L |
1 | 0 | (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 | キャリーがあるときセット、さもなくばクリア |
解説
- バイトの <data> を Yb とします。
- <ea> が指すバイト(Dr のとき最下位バイト)を読み出して Xb とします。
- Xb から Yb を引いた結果を Zb とします。
- 結果に応じてフラグを操作します。
68020/68030/68040/68060 は PC 相対を指定できます。
CMP.W #<data>,<ea>
68000/68010 の命令 CMPI.W #<data>,<ea> の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | モード | レジスタr |
+2 | ワードデータ |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 |
0 | 1 | 0 | r | (Ar) | 12(3/0) | 12(3/0) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 14(3/0) | 14(3/0) |
1 | (d16,Ar) | 16(4/0) | 16(4/0) |
1 | 0 | (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) |
1 | 0 | 0 | 0 | (xxx).W | 16(4/0) | 16(4/0) |
1 | (xxx).L | 20(5/0) | 20(5/0) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | オーバーフローしたときセット、さもなくばクリア |
C | キャリーがあるときセット、さもなくばクリア |
解説
- ワードの <data> を Yw とします。
- <ea> が指すワード(Dr のとき下位ワード)を読み出して Xw とします。
- Xw から Yw を引いた結果を Zw とします。
- 結果に応じてフラグを操作します。
68000/68010 は PC 相対を指定できません。
CMP.W #<data>,<ea>
68020/68030/68040/68060 の命令 CMPI.W #<data>,<ea> の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | モード | レジスタr |
+2 | ワードデータ |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68020 | 68030 | 68040 | 68060 |
0 | 1 | 0 | r | (Ar) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) |
1 | (d16,Ar) |
1 | 0 | (d8,Ar,Xn) | - | - | - | - |
(d8,Ar,Xn*sf) | 🚧 | 🚧 | 🚧 | 🚧 |
(bd,Ar,Xn*sf) |
([bd,Ar,Xn*sf],od) |
([bd,Ar],Xn*sf,od) |
1 | 0 | 0 | 0 | (xxx).W |
1 | (xxx).L |
1 | 0 | (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 | キャリーがあるときセット、さもなくばクリア |
解説
- ワードの <data> を Yw とします。
- <ea> が指すワード(Dr のとき下位ワード)を読み出して Xw とします。
- Xw から Yw を引いた結果を Zw とします。
- 結果に応じてフラグを操作します。
68020/68030/68040/68060 は PC 相対を指定できます。
CMP.L #<data>,<ea>
68000/68010 の命令 CMPI.L #<data>,<ea> の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | モード | レジスタr |
+2 | ロングワードデータの上位ワード |
+4 | ロングワードデータの下位ワード |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 |
0 | 1 | 0 | r | (Ar) | 20(5/0) | 20(5/0) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 22(5/0) | 22(5/0) |
1 | (d16,Ar) | 24(6/0) | 24(6/0) |
1 | 0 | (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) |
1 | 0 | 0 | 0 | (xxx).W | 24(6/0) | 24(6/0) |
1 | (xxx).L | 28(7/0) | 28(7/0) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | オーバーフローしたときセット、さもなくばクリア |
C | キャリーがあるときセット、さもなくばクリア |
解説
- ロングワードの <data> を Yl とします。
- <ea> が指すロングワード(Dr のとき全体)を読み出して Xl とします。
- Xl から Yl を引いた結果を Zl とします。
- 結果に応じてフラグを操作します。
68000/68010 は PC 相対を指定できません。
CMP.L #<data>,<ea>
68020/68030/68040/68060 の命令 CMPI.L #<data>,<ea> の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | モード | レジスタr |
+2 | ロングワードデータの上位ワード |
+4 | ロングワードデータの下位ワード |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68020 | 68030 | 68040 | 68060 |
0 | 1 | 0 | r | (Ar) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) |
1 | (d16,Ar) |
1 | 0 | (d8,Ar,Xn) | - | - | - | - |
(d8,Ar,Xn*sf) | 🚧 | 🚧 | 🚧 | 🚧 |
(bd,Ar,Xn*sf) |
([bd,Ar,Xn*sf],od) |
([bd,Ar],Xn*sf,od) |
1 | 0 | 0 | 0 | (xxx).W |
1 | (xxx).L |
1 | 0 | (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 | キャリーがあるときセット、さもなくばクリア |
解説
- ロングワードの <data> を Yl とします。
- <ea> が指すロングワード(Dr のとき全体)を読み出して Xl とします。
- Xl から Yl を引いた結果を Zl とします。
- 結果に応じてフラグを操作します。
68020/68030/68040/68060 は PC 相対を指定できます。
CMP.B <ea>,Dq
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 0 | 1 | 1 | レジスタq | 0 | 0 | 0 | モード | レジスタr |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
0 | 0 | 0 | r | Dr | 4(1/0) | 4(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | (Ar) | 8(2/0) | 8(2/0) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 10(2/0) | 10(2/0) |
1 | (d16,Ar) | 12(3/0) | 12(3/0) |
1 | 0 | (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) |
1 | 0 | 0 | 0 | (xxx).W | 12(3/0) | 12(3/0) |
1 | (xxx).L | 16(4/0) | 16(4/0) |
1 | 0 | (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) |
1 | 0 | 0 | #<data> | 8(2/0) | 8(2/0) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | オーバーフローしたときセット、さもなくばクリア |
C | キャリーがあるときセット、さもなくばクリア |
解説
- <ea> が指すバイト(Dr のとき最下位バイト)を読み出して Yb とします。
- Dq の最下位バイトを読み出して Xb とします。
- Xb から Yb を引いた結果を Zb とします。
- 結果に応じてフラグを操作します。
CMP.W <ea>,Dq
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 0 | 1 | 1 | レジスタq | 0 | 0 | 1 | モード | レジスタr |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
0 | 0 | 0 | r | Dr | 4(1/0) | 4(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | Ar |
1 | 0 | (Ar) | 8(2/0) | 8(2/0) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 10(2/0) | 10(2/0) |
1 | (d16,Ar) | 12(3/0) | 12(3/0) |
1 | 0 | (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) |
1 | 0 | 0 | 0 | (xxx).W | 12(3/0) | 12(3/0) |
1 | (xxx).L | 16(4/0) | 16(4/0) |
1 | 0 | (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) |
1 | 0 | 0 | #<data> | 8(2/0) | 8(2/0) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | オーバーフローしたときセット、さもなくばクリア |
C | キャリーがあるときセット、さもなくばクリア |
解説
- <ea> が指すワード(Dr のとき下位ワード)を読み出して Yw とします。
- Dq の下位ワードを読み出して Xw とします。
- Xw から Yw を引いた結果を Zw とします。
- 結果に応じてフラグを操作します。
CMP.L <ea>,Dq
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 0 | 1 | 1 | レジスタq | 0 | 1 | 0 | モード | レジスタr |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
0 | 0 | 0 | r | Dr | 6(1/0) | 6(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | Ar |
1 | 0 | (Ar) | 14(3/0) | 14(3/0) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 16(3/0) | 16(3/0) |
1 | (d16,Ar) | 18(4/0) | 18(4/0) |
1 | 0 | (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) |
1 | 0 | 0 | 0 | (xxx).W | 18(4/0) | 18(4/0) |
1 | (xxx).L | 22(5/0) | 22(5/0) |
1 | 0 | (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) |
1 | 0 | 0 | #<data> | 14(3/0) | 14(3/0) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | オーバーフローしたときセット、さもなくばクリア |
C | キャリーがあるときセット、さもなくばクリア |
解説
- <ea> が指すロングワード(Dr のとき全体)を読み出して Yl とします。
- Dq の全体を読み出して Xl とします。
- Xl から Yl を引いた結果を Zl とします。
- 結果に応じてフラグを操作します。
CMP.W <ea>,Aq
68000/68010/68020/68030/68040/68060 の命令 CMPA.W <ea>,Aq の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 0 | 1 | 1 | レジスタq | 0 | 1 | 1 | モード | レジスタr |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
0 | 0 | 0 | r | Dr | 6(1/0) | 6(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | Ar |
1 | 0 | (Ar) | 10(2/0) | 10(2/0) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 12(2/0) | 12(2/0) |
1 | (d16,Ar) | 14(3/0) | 14(3/0) |
1 | 0 | (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) |
1 | 0 | 0 | 0 | (xxx).W | 14(3/0) | 14(3/0) |
1 | (xxx).L | 18(4/0) | 18(4/0) |
1 | 0 | (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) |
1 | 0 | 0 | #<data> | 10(2/0) | 10(2/0) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | オーバーフローしたときセット、さもなくばクリア |
C | キャリーがあるときセット、さもなくばクリア |
解説
- <ea> が指すワード(Dr のとき下位ワード)を読み出して Yw とします。
- Yw をロングワードに符号拡張したものを Yl とします。
- Aq の全体を読み出して Xl とします。
- Xl から Yl を引いた結果を Zl とします。
- 結果に応じてフラグを操作します。
CMP.L <ea>,Aq
68000/68010/68020/68030/68040/68060 の命令 CMPA.L <ea>,Aq の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 0 | 1 | 1 | レジスタq | 1 | 1 | 1 | モード | レジスタr |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
0 | 0 | 0 | r | Dr | 6(1/0) | 6(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | Ar |
1 | 0 | (Ar) | 14(3/0) | 14(3/0) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 16(3/0) | 16(3/0) |
1 | (d16,Ar) | 18(4/0) | 18(4/0) |
1 | 0 | (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) |
1 | 0 | 0 | 0 | (xxx).W | 18(4/0) | 18(4/0) |
1 | (xxx).L | 22(5/0) | 22(5/0) |
1 | 0 | (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) |
1 | 0 | 0 | #<data> | 14(3/0) | 14(3/0) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | オーバーフローしたときセット、さもなくばクリア |
C | キャリーがあるときセット、さもなくばクリア |
解説
- <ea> が指すロングワード(Dr のとき全体)を読み出して Yl とします。
- Aq の全体を読み出して Xl とします。
- Xl から Yl を引いた結果を Zl とします。
- 結果に応じてフラグを操作します。