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

ASR

ASR

算術右シフト (えーえすあーる)


ASR.W <ea>

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

命令コード

アドレス1514131211109876543210
+01110000011モードレジスタr

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

モードレジスタr<ea>680006801068020680306804068060
010r(Ar)12(2/1)12(2/1)🚧🚧🚧🚧
1(Ar)+
100-(Ar)14(2/1)14(2/1)
1(d16,Ar)16(3/1)16(3/1)
10(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)
1000(xxx).W16(3/1)16(3/1)
1(xxx).L20(4/1)20(4/1)

コンディションコード

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

解説

  1. <ea> が指すワード(Dr のとき下位ワード)を読み出して Xw とします。
  2. Xw を 1 回算術右シフトした結果を Zw とします。
  3. 結果に応じてフラグを操作します。
  4. Zw を <ea> が指すワード(Dr のとき下位ワード)へ書き込みます。

ASR.B Dr

68000/68010/68020/68030/68040/68060 の命令 ASR.B #1,Dr の別名

命令コード

アドレス1514131211109876543210
+01110001000000レジスタr

実行時間

680006801068020680306804068060
8(1/0)8(1/0)🚧🚧🚧🚧

コンディションコード

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

解説

  1. Dr の最下位バイトを読み出して Xb とします。
  2. Xb を 1 回算術右シフトした結果を Zb とします。
  3. 結果に応じてフラグを操作します。
  4. Zb を Dr の最下位バイトへ書き込みます。

Dr の最下位バイト以外の部分は変化しません。


ASR.W Dr

68000/68010/68020/68030/68040/68060 の命令 ASR.W #1,Dr の別名

命令コード

アドレス1514131211109876543210
+01110001001000レジスタr

実行時間

680006801068020680306804068060
8(1/0)8(1/0)🚧🚧🚧🚧

コンディションコード

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

解説

  1. Dr の下位ワードを読み出して Xw とします。
  2. Xw を 1 回算術右シフトした結果を Zw とします。
  3. 結果に応じてフラグを操作します。
  4. Zw を Dr の下位ワードへ書き込みます。

Dr の上位ワードは変化しません。


ASR.L Dr

68000/68010/68020/68030/68040/68060 の命令 ASR.L #1,Dr の別名

命令コード

アドレス1514131211109876543210
+01110001010000レジスタr

実行時間

680006801068020680306804068060
10(1/0)10(1/0)🚧🚧🚧🚧

コンディションコード

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

解説

  1. Dr の全体を読み出して Xl とします。
  2. Xl を 1 回算術右シフトした結果を Zl とします。
  3. 結果に応じてフラグを操作します。
  4. Zl を Dr の全体へ書き込みます。

ASR.B #<data>,Dr

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

命令コード

アドレス1514131211109876543210
+01110データ000000レジスタr

実行時間

680006801068020680306804068060
6+2n※(1/0)6+2n※(1/0)🚧🚧🚧🚧

※ n はシフトする回数。

コンディションコード

フラグ入力出力説明
X使用しない変化する最後に押し出されたビット
N結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
V常にクリア
C変化する最後に押し出されたビット

解説

  1. 1〜8 の <data> を Yb とします。
  2. Dr の最下位バイトを読み出して Xb とします。
  3. Xb を Yb 回算術右シフトした結果を Zb とします。
  4. 結果に応じてフラグを操作します。
  5. Zb を Dr の最下位バイトへ書き込みます。

Dr の最下位バイト以外の部分は変化しません。

<data> が 8 のとき命令コードのビット 11〜9 は 000 です。


ASR.W #<data>,Dr

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

命令コード

アドレス1514131211109876543210
+01110データ001000レジスタr

実行時間

680006801068020680306804068060
6+2n※(1/0)6+2n※(1/0)🚧🚧🚧🚧

※ n はシフトする回数。

コンディションコード

フラグ入力出力説明
X使用しない変化する最後に押し出されたビット
N結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
V常にクリア
C変化する最後に押し出されたビット

解説

  1. 1〜8 の <data> を Yw とします。
  2. Dr の下位ワードを読み出して Xw とします。
  3. Xw を Yw 回算術右シフトした結果を Zw とします。
  4. 結果に応じてフラグを操作します。
  5. Zw を Dr の下位ワードへ書き込みます。

Dr の上位ワードは変化しません。

<data> が 8 のとき命令コードのビット 11〜9 は 000 です。


ASR.L #<data>,Dr

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

命令コード

アドレス1514131211109876543210
+01110データ010000レジスタr

実行時間

680006801068020680306804068060
8+2n※(1/0)8+2n※(1/0)🚧🚧🚧🚧

※ n はシフトする回数。

コンディションコード

フラグ入力出力説明
X使用しない変化する最後に押し出されたビット
N結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
V常にクリア
C変化する最後に押し出されたビット

解説

  1. 1〜8 の <data> を Yl とします。
  2. Dr の全体を読み出して Xl とします。
  3. Xl を Yl 回算術右シフトした結果を Zl とします。
  4. 結果に応じてフラグを操作します。
  5. Zl を Dr の全体へ書き込みます。

<data> が 8 のとき命令コードのビット 11〜9 は 000 です。


ASR.B Dq,Dr

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

命令コード

アドレス1514131211109876543210
+01110レジスタq000100レジスタr

実行時間

680006801068020680306804068060
6+2n※(1/0)6+2n※(1/0)🚧🚧🚧🚧

※ n はシフトする回数。

コンディションコード

フラグ入力出力説明
X使用しない変化する回数が 0 のとき変化しない、さもなくば最後に押し出されたビット
N結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
V常にクリア
C変化する回数が 0 のときクリア、さもなくば最後に押し出されたビット

解説

  1. Dq の下位 6 ビットの 0〜63 を Yb とします。
  2. Dr の最下位バイトを読み出して Xb とします。
  3. Xb を Yb 回算術右シフトした結果を Zb とします。
  4. 結果に応じてフラグを操作します。
  5. Zb を Dr の最下位バイトへ書き込みます。

Dr の最下位バイト以外の部分は変化しません。


ASR.W Dq,Dr

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

命令コード

アドレス1514131211109876543210
+01110レジスタq001100レジスタr

実行時間

680006801068020680306804068060
6+2n※(1/0)6+2n※(1/0)🚧🚧🚧🚧

※ n はシフトする回数。

コンディションコード

フラグ入力出力説明
X使用しない変化する回数が 0 のとき変化しない、さもなくば最後に押し出されたビット
N結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
V常にクリア
C変化する回数が 0 のときクリア、さもなくば最後に押し出されたビット

解説

  1. Dq の下位 6 ビットの 0〜63 を Yw とします。
  2. Dr の下位ワードを読み出して Xw とします。
  3. Xw を Yw 回算術右シフトした結果を Zw とします。
  4. 結果に応じてフラグを操作します。
  5. Zw を Dr の下位ワードへ書き込みます。

Dr の上位ワードは変化しません。


ASR.L Dq,Dr

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

命令コード

アドレス1514131211109876543210
+01110レジスタq010100レジスタr

実行時間

680006801068020680306804068060
8+2n※(1/0)8+2n※(1/0)🚧🚧🚧🚧

※ n はシフトする回数。

コンディションコード

フラグ入力出力説明
X使用しない変化する回数が 0 のとき変化しない、さもなくば最後に押し出されたビット
N結果の最上位ビット
Z結果が 0 のときセット、さもなくばクリア
V常にクリア
C変化する回数が 0 のときクリア、さもなくば最後に押し出されたビット

解説

  1. Dq の下位 6 ビットの 0〜63 を Yw とします。
  2. Dr の全体を読み出して Xl とします。
  3. Xl を Yl 回算術右シフトした結果を Zl とします。
  4. 結果に応じてフラグを操作します。
  5. Zl を Dr の全体へ書き込みます。