更新日: 2023 年 7 月 6 日
ASR
ASR
算術右シフト (えーえすあーる)
ASR.W <ea>
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | モード | レジスタr |
アドレッシングモードと実行時間
モード | レジスタr | <ea> | 68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
0 | 1 | 0 | r | (Ar) | 12(2/1) | 12(2/1) | 🚧 | 🚧 | 🚧 | 🚧 |
1 | (Ar)+ |
1 | 0 | 0 | -(Ar) | 14(2/1) | 14(2/1) |
1 | (d16,Ar) | 16(3/1) | 16(3/1) |
1 | 0 | (d8,Ar,Xn) | 18(3/1) | 18(3/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 | 16(3/1) | 16(3/1) |
1 | (xxx).L | 20(4/1) | 20(4/1) |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化する | 押し出されたビット |
N | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C | 変化する | 押し出されたビット |
解説
- <ea> が指すワード(Dr のとき下位ワード)を読み出して Xw とします。
- Xw を 1 回算術右シフトした結果を Zw とします。
- 結果に応じてフラグを操作します。
- Zw を <ea> が指すワード(Dr のとき下位ワード)へ書き込みます。
ASR.B Dr
68000/68010/68020/68030/68040/68060 の命令 ASR.B #1,Dr の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | レジスタr |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
8(1/0) | 8(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化する | 押し出されたビット |
N | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C | 変化する | 押し出されたビット |
解説
- Dr の最下位バイトを読み出して Xb とします。
- Xb を 1 回算術右シフトした結果を Zb とします。
- 結果に応じてフラグを操作します。
- Zb を Dr の最下位バイトへ書き込みます。
Dr の最下位バイト以外の部分は変化しません。
ASR.W Dr
68000/68010/68020/68030/68040/68060 の命令 ASR.W #1,Dr の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | レジスタr |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
8(1/0) | 8(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化する | 押し出されたビット |
N | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C | 変化する | 押し出されたビット |
解説
- Dr の下位ワードを読み出して Xw とします。
- Xw を 1 回算術右シフトした結果を Zw とします。
- 結果に応じてフラグを操作します。
- Zw を Dr の下位ワードへ書き込みます。
Dr の上位ワードは変化しません。
ASR.L Dr
68000/68010/68020/68030/68040/68060 の命令 ASR.L #1,Dr の別名
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | レジスタr |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
10(1/0) | 10(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化する | 押し出されたビット |
N | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C | 変化する | 押し出されたビット |
解説
- Dr の全体を読み出して Xl とします。
- Xl を 1 回算術右シフトした結果を Zl とします。
- 結果に応じてフラグを操作します。
- Zl を Dr の全体へ書き込みます。
ASR.B #<data>,Dr
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 1 | 1 | 0 | データ | 0 | 0 | 0 | 0 | 0 | 0 | レジスタr |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
6+2n※(1/0) | 6+2n※(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
※ n はシフトする回数。
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化する | 最後に押し出されたビット |
N | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C | 変化する | 最後に押し出されたビット |
解説
- 1〜8 の <data> を Yb とします。
- Dr の最下位バイトを読み出して Xb とします。
- Xb を Yb 回算術右シフトした結果を Zb とします。
- 結果に応じてフラグを操作します。
- Zb を Dr の最下位バイトへ書き込みます。
Dr の最下位バイト以外の部分は変化しません。
<data> が 8 のとき命令コードのビット 11〜9 は 000 です。
ASR.W #<data>,Dr
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 1 | 1 | 0 | データ | 0 | 0 | 1 | 0 | 0 | 0 | レジスタr |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
6+2n※(1/0) | 6+2n※(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
※ n はシフトする回数。
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化する | 最後に押し出されたビット |
N | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C | 変化する | 最後に押し出されたビット |
解説
- 1〜8 の <data> を Yw とします。
- Dr の下位ワードを読み出して Xw とします。
- Xw を Yw 回算術右シフトした結果を Zw とします。
- 結果に応じてフラグを操作します。
- Zw を Dr の下位ワードへ書き込みます。
Dr の上位ワードは変化しません。
<data> が 8 のとき命令コードのビット 11〜9 は 000 です。
ASR.L #<data>,Dr
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 1 | 1 | 0 | データ | 0 | 1 | 0 | 0 | 0 | 0 | レジスタr |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
8+2n※(1/0) | 8+2n※(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
※ n はシフトする回数。
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化する | 最後に押し出されたビット |
N | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C | 変化する | 最後に押し出されたビット |
解説
- 1〜8 の <data> を Yl とします。
- Dr の全体を読み出して Xl とします。
- Xl を Yl 回算術右シフトした結果を Zl とします。
- 結果に応じてフラグを操作します。
- Zl を Dr の全体へ書き込みます。
<data> が 8 のとき命令コードのビット 11〜9 は 000 です。
ASR.B Dq,Dr
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 1 | 1 | 0 | レジスタq | 0 | 0 | 0 | 1 | 0 | 0 | レジスタr |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
6+2n※(1/0) | 6+2n※(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
※ n はシフトする回数。
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化する | 回数が 0 のとき変化しない、さもなくば最後に押し出されたビット |
N | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C | 変化する | 回数が 0 のときクリア、さもなくば最後に押し出されたビット |
解説
- Dq の下位 6 ビットの 0〜63 を Yb とします。
- Dr の最下位バイトを読み出して Xb とします。
- Xb を Yb 回算術右シフトした結果を Zb とします。
- 結果に応じてフラグを操作します。
- Zb を Dr の最下位バイトへ書き込みます。
Dr の最下位バイト以外の部分は変化しません。
ASR.W Dq,Dr
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 1 | 1 | 0 | レジスタq | 0 | 0 | 1 | 1 | 0 | 0 | レジスタr |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
6+2n※(1/0) | 6+2n※(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
※ n はシフトする回数。
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化する | 回数が 0 のとき変化しない、さもなくば最後に押し出されたビット |
N | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C | 変化する | 回数が 0 のときクリア、さもなくば最後に押し出されたビット |
解説
- Dq の下位 6 ビットの 0〜63 を Yw とします。
- Dr の下位ワードを読み出して Xw とします。
- Xw を Yw 回算術右シフトした結果を Zw とします。
- 結果に応じてフラグを操作します。
- Zw を Dr の下位ワードへ書き込みます。
Dr の上位ワードは変化しません。
ASR.L Dq,Dr
68000/68010/68020/68030/68040/68060 の命令
命令コード
アドレス | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+0 | 1 | 1 | 1 | 0 | レジスタq | 0 | 1 | 0 | 1 | 0 | 0 | レジスタr |
実行時間
68000 | 68010 | 68020 | 68030 | 68040 | 68060 |
8+2n※(1/0) | 8+2n※(1/0) | 🚧 | 🚧 | 🚧 | 🚧 |
※ n はシフトする回数。
コンディションコード
フラグ | 入力 | 出力 | 説明 |
X | 使用しない | 変化する | 回数が 0 のとき変化しない、さもなくば最後に押し出されたビット |
N | 結果の最上位ビット |
Z | 結果が 0 のときセット、さもなくばクリア |
V | 常にクリア | |
C | 変化する | 回数が 0 のときクリア、さもなくば最後に押し出されたビット |
解説
- Dq の下位 6 ビットの 0〜63 を Yw とします。
- Dr の全体を読み出して Xl とします。
- Xl を Yl 回算術右シフトした結果を Zl とします。
- 結果に応じてフラグを操作します。
- Zl を Dr の全体へ書き込みます。