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 彙編程式· 偽指令 |
| 指令擴充套件 | 浮點數 · 高階語言 |
| 此頁面或部分是一個未開發的草稿或提綱。 您可以幫助 開發工作,或者您可以在 專案室 中尋求幫助。 |