跳轉到內容

360 彙編/360 指令/BCT

來自華夏公益教科書,開放的書籍,面向開放的世界

BCT — 按計數分支 — 操作碼 46 / 十進位制 70 — 4 位元組 RX 指令。 


BCT  目標暫存器,偏移量 (索引暫存器,基址暫存器)
  BCT 2,LABEL
  BCT 15,106(10)
  BCT 0,256(7,6)
RX 指令 (4 位元組)
位元組 1 位元組 2 位元組 3 和 4
目標暫存器 分支地址
(十六進位制) (8 位)
操作碼
46
(4 位)

0..F
(4 位)
索引
暫存器

0..F
(4 位)
基址
暫存器

0..F
(12 位)
偏移量
0..FFF
  • 第一個引數是 目標暫存器,其值受指令影響。
  • 第二個引數是要分支到的地址。它包含基址暫存器、索引暫存器和偏移地址。偏移量 用作基址暫存器中值的無符號偏移,範圍為 0 到 4095,該偏移量將新增到基址暫存器中包含的值。如果索引暫存器為 0,則忽略它;否則,將它的內容新增到前面的結果中以獲得最終地址。
  • 基址暫存器索引暫存器 的值為 0 到 15。偏移地址為 0 到 4095。

如果使用了 USING 偽指令,並且目標地址標籤(偏移量)在某個基址暫存器值所在的 4096 位元組範圍內,則彙編程式會自動確定目標和基址暫存器值。

可用性

[編輯原始碼]

BCT 指令在所有型號上都可用,包括 360、370 和 z/System。


指令目的

[編輯 | 編輯原始碼]

BCT 指令從第一個引數中指定的目標暫存器內容的值中減去 1。如果減法後目標暫存器中的值為零,則不會發生分支。否則,程式將分支到指定的地址。請注意,如果減法前目標暫存器中的結果為 0,則結果為負 1,並且會發生分支。如果減法前目標暫存器中的值為最小可能值,則結果為最大可能值,溢位會被忽略,並且會發生分支。

典型用法

[編輯 | 編輯原始碼]

要執行一個迴圈語句,其中從目標暫存器中包含的值中減去 1,如果結果不為 0,則應該發生分支。

作為第一個引數指定的目標暫存器中包含的值減少 1。如果減法後的值為 0,則執行將繼續執行此指令後的指令。否則,執行將轉移到作為第二個引數指定的地址。

條件碼

[編輯 | 編輯原始碼]

條件碼不會改變。如果值為最小可能值,並且溢位到最大值,則會忽略它。

異常和故障

[編輯 | 編輯原始碼]
  • 如果要分支到的地址不在相同的 PSW 儲存金鑰中(除非此程序的儲存金鑰為 0),則會發生保護違規異常。
  • 如果要分支到的地址為奇數,則會發生地址異常。
  • 如果地址不在可用記憶體範圍內,則會發生規範異常。

備用分支指令

[編輯 | 編輯原始碼]
  • BCTR 指令提供相同的功能,但分支地址在另一個暫存器中。
上一條指令
BCR
360 彙編指令   下一條指令
BCTG
上一個操作碼
45
下一個操作碼
47
360 組合語言
360 系列 簡介 · 基本常見問題解答 · 360 系列 · 360 架構
360 指令集 360 指令 · 分支指令 · 資料傳輸指令 · 控制流指令 · 算術指令 · 邏輯指令 · 移位和旋轉指令 · 特權指令 · 其他指令
語法和彙編程式 360 彙編程式· 偽指令
指令擴充套件 浮點數 · 高階語言


華夏公益教科書