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

BSR

BSR

相対呼び出し (びーえすあーる)


BSR.W <label>

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

命令コード

アドレス1514131211109876543210
+00110000100000000
+2ワードオフセット

実行時間

680006801068020680306804068060
18(2/2)18(2/2)🚧🚧🚧予測あり1
予測なし3
(2/2)

コンディションコード

フラグ入力出力
X使用しない変化しない
N
Z
V
C

解説

  1. ワードオフセットを Yw とします。
  2. Yw をロングワードに符号拡張したものを Yl とします。
  3. A7 から 4 を引きます。
  4. 命令の先頭アドレス +4 を A7 が指すロングワードへ書き込みます。
  5. 命令の先頭アドレス +2+Yl を PC へ書き込みます。

BSR.L <label>

68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+00110000111111111
+2ロングワードオフセットの上位ワード
+4ロングワードオフセットの下位ワード

実行時間

68020680306804068060
🚧🚧🚧予測あり1
予測なし3

コンディションコード

フラグ入力出力
X使用しない変化しない
N
Z
V
C

解説

  1. ロングワードオフセットを Yl とします。
  2. A7 から 4 を引きます。
  3. 命令の先頭アドレス +6 を A7 が指すロングワードへ書き込みます。
  4. 命令の先頭アドレス +2+Yl を PC へ書き込みます。

BSR.S <label>

68000/68010 の命令

命令コード

アドレス1514131211109876543210
+001100001バイトオフセット

実行時間

6800068010
18(2※/2)18(2※/2)

※ 68000/68010 は命令の直後のワードを余分に読み込みます。

コンディションコード

フラグ入力出力
X使用しない変化しない
N
Z
V
C

解説

  1. 68000/68010 は命令の直後のワードを余分に読み込みます。
  2. バイトオフセットを Yb とします。
  3. Yb をロングワードに符号拡張したものを Yl とします。
  4. A7 から 4 を引きます。
  5. 命令の先頭アドレス +2 を A7 が指すロングワードへ書き込みます。
  6. 命令の先頭アドレス +2+Yl を PC へ書き込みます。

BRA.S/BSR.S/Bcc.S の命令コードのバイトオフセットの部分に $00 を入れると BRA.W/BSR.W/Bcc.W の命令コードになります。すなわち、BRA.S/BSR.S/Bcc.S で命令の直後に分岐することはできません。アセンブラはそのような命令を出力しませんが、バイトオフセットを自己書き換えするときは注意してください。


BSR.S <label>

68020/68030/68040/68060 の命令

命令コード

アドレス1514131211109876543210
+001100001バイトオフセット

実行時間

68020680306804068060
🚧🚧🚧予測あり1
予測なし3
(1/2)

コンディションコード

フラグ入力出力
X使用しない変化しない
N
Z
V
C

解説

  1. バイトオフセットを Yb とします。
  2. Yb をロングワードに符号拡張したものを Yl とします。
  3. A7 から 4 を引きます。
  4. 命令の先頭アドレス +2 を A7 が指すロングワードへ書き込みます。
  5. 命令の先頭アドレス +2+Yl を PC へ書き込みます。

BRA.S/BSR.S/Bcc.S の命令コードのバイトオフセットの部分に $00 を入れると BRA.W/BSR.W/Bcc.W の命令コードになります。すなわち、BRA.S/BSR.S/Bcc.S で命令の直後に分岐することはできません。アセンブラはそのような命令を出力しませんが、バイトオフセットを自己書き換えするときは注意してください。