更新日: 2023 年 3 月 18 日
ANDI
ANDI
即値論理積 (あんどあい)
ANDI.B #<data>,CCR
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
+2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | バイトデータ |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
20(2/0) | 20(2/0) | 🚧 | 🚧 | 🚧 | 🚧 |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用する | 変化する | 結果のビット 4 |
N | 結果のビット 3 |
Z | 結果のビット 2 |
V | 結果のビット 1 |
C | 結果のビット 0 |
解説
- バイトの <data> を Yb とします。
- CCR を読み出して Xb とします。
- Xb と Yb のビット毎の論理積を Zb とします。
- Zw を CCR へ書き込みます。
ANDI.B #<data>,<ea>
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | モード | レジスタr |
+2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | バイトデータ |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
0 | 0 | 0 | r | Dr | 8(2/0) | 8(2/0) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | (Ar) | 16(3/1) | 16(3/1) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 18(3/1) | 18(3/1) |
1 | (d16,Ar) | 20(4/1) | 20(4/1) |
1 | 0 | (d8,Ar,Xn) | 22(4/1) | 22(4/1) | - | - | - | - |
(d8,Ar,Xn*sf) | - | - | 🚧 | 🚧 | 🚧 | 🚧 |
(bd,Ar,Xn*sf) |
([bd,Ar,Xn*sf],od) |
([bd,Ar],Xn*sf,od) |
1 | 0 | 0 | 0 | (xxx).W | 20(4/1) | 20(4/1) |
1 | (xxx).L | 24(5/1) | 24(5/1) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C |
解説
- バイトの <data> を Yb とします。
- <ea> が指すバイト(Dr のとき最下位バイト)を読み出して Xb とします。
- Xb と Yb のビット毎の論理積を Zb とします。
- 結果に応じてフラグを操作します。
- Zb を <ea> が指すバイト(Dr のとき最下位バイト)へ書き込みます。
<ea> が Dr のとき Dr の最下位バイト以外の部分は変化しません。
ANDI.W #<data>,SR
68000/68010/68020/68030/68040/68060 の特権命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
+2 | ワードデータ |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
20(2/0) | 20(2/0) | 🚧 | 🚧 | 🚧 | 🚧 |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用する | 変化する | 結果のビット 4 |
N | 結果のビット 3 |
Z | 結果のビット 2 |
V | 結果のビット 1 |
C | 結果のビット 0 |
解説
- ユーザモードのとき特権違反例外処理を開始します。
- ワードの <data> を Yw とします。
- SR を読み出して Xw とします。
- Xw と Yw のビット毎の論理積を Zw とします。
- Zw を SR へ書き込みます。
- SR のビット 13 が 0 になったときユーザモードへ移行します。
68000/68010のSR
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
T | 0 | S | 0 | 0 | I2 | I1 | I0 | 0 | 0 | 0 | X | N | Z | V | C |
68020/68030/68040のSR
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
T1 | T0 | S | M | 0 | I2 | I1 | I0 | 0 | 0 | 0 | X | N | Z | V | C |
68060のSR
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
T | 0 | S | M | 0 | I2 | I1 | I0 | 0 | 0 | 0 | X | N | Z | V | C |
ANDI.W #<data>,<ea>
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | モード | レジスタr |
+2 | ワードデータ |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
0 | 0 | 0 | r | Dr | 8(2/0) | 8(2/0) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | (Ar) | 16(3/1) | 16(3/1) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 18(3/1) | 18(3/1) |
1 | (d16,Ar) | 20(4/1) | 20(4/1) |
1 | 0 | (d8,Ar,Xn) | 22(4/1) | 22(4/1) | - | - | - | - |
(d8,Ar,Xn*sf) | - | - | 🚧 | 🚧 | 🚧 | 🚧 |
(bd,Ar,Xn*sf) |
([bd,Ar,Xn*sf],od) |
([bd,Ar],Xn*sf,od) |
1 | 0 | 0 | 0 | (xxx).W | 20(4/1) | 20(4/1) |
1 | (xxx).L | 24(5/1) | 24(5/1) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C |
解説
- ワードの <data> を Yw とします。
- <ea> が指すワード(Dr のとき下位ワード)を読み出して Xw とします。
- Xw と Yw のビット毎の論理積を Zw とします。
- 結果に応じてフラグを操作します。
- Zw を <ea> が指すワード(Dr のとき下位ワード)へ書き込みます。
<ea> が Dr のとき Dr の上位ワードは変化しません。
ANDI.L #<data>,<ea>
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | モード | レジスタr |
+2 | ロングワードデータの上位ワード |
+4 | ロングワードデータの下位ワード |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
0 | 0 | 0 | r | Dr | 16(3/0) | 16(3/0) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | (Ar) | 28(5/2) | 28(5/2) |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 30(5/2) | 30(5/2) |
1 | (d16,Ar) | 32(6/2) | 32(6/2) |
1 | 0 | (d8,Ar,Xn) | 34(6/2) | 34(6/2) | - | - | - | - |
(d8,Ar,Xn*sf) | - | - | 🚧 | 🚧 | 🚧 | 🚧 |
(bd,Ar,Xn*sf) |
([bd,Ar,Xn*sf],od) |
([bd,Ar],Xn*sf,od) |
1 | 0 | 0 | 0 | (xxx).W | 32(6/2) | 32(6/2) |
1 | (xxx).L | 36(7/2) | 36(7/2) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化しない | |
N | 変化する | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C |
解説
- ロングワードの <data> を Yl とします。
- <ea> が指すロングワード(Dr のとき全体)を読み出して Xl とします。
- Xl と Yl のビット毎の論理積を Zl とします。
- 結果に応じてフラグを操作します。
- Zl を <ea> が指すロングワード(Dr のとき全体)へ書き込みます。