360 彙編/360 指令/ST
外觀
ST - 儲存 - 操作碼 50 - RX 格式指令 (32 位)
- ST 2,N2
- ST 11,106(8,10)
具體的語法是
- ST 源暫存器,位移(索引暫存器,基址暫存器)
如果使用了 USING 偽指令,並且目標地址標籤所使用的值在某個基址暫存器值的 4096 位元組範圍內,則彙編程式會自動確定 位移、索引暫存器和 基址暫存器 的值。
| RX 指令 (4 位元組) | |||||||
| 位元組 1 | 位元組 2 | 位元組 3 和 4 | |||||
| 源暫存器 | 目標地址 | ||||||
| (以十六進位制) | (8 位) 操作碼 50 |
(4 位) 0..F |
(4 位) 索引 暫存器 0..F |
(4 位) 基址 暫存器 0..F |
(12 位) 位移 0..FFF | ||
- 第一個引數是 源暫存器,其值不受指令影響。
- 第二個引數是目標值儲存地址,其中包含源暫存器的內容。它由基址暫存器、索引暫存器和位移地址組成。位移用作基址暫存器值從 0 到 4095 的無符號偏移量,並將此位移新增到基址暫存器中包含的值。如果索引暫存器為 0,則忽略它;否則,將其內容新增到先前結果中以獲得最終地址。
- 基址暫存器 和 索引暫存器 值為 0 到 15。偏移地址為 0 到 4095。
如果使用了 USING 偽指令,並且目標地址標籤所使用的值 (位移) 在某個基址暫存器值的 4096 位元組範圍內,則彙編程式會自動確定目標和基址暫存器值。
ST 指令在所有型號的 360、370 和 z/System 上都可用。
ST 指令將第一個引數指定的 源暫存器 中包含的 32 位整數複製到第二個引數 (目標地址) 指定的記憶體地址中。
目標地址的構造方法是:取基址暫存器中儲存的值,加上 12 位偏移量 (稱為 位移) 地址的值,然後將索引暫存器中儲存的值 (除非索引暫存器為 0,否則不新增其內容) 加到基址和位移地址上,以確定目標地址。在上面的 106(8,10) 地址示例中,暫存器 10 中儲存的地址值將與位移地址 106 (十六進位制 6A) 相加,然後將暫存器 8 中儲存的地址值新增到此地址以建立目標地址。如果使用暫存器 0 而不是暫存器 8,則不會使用暫存器 0 中儲存的值。
目標地址必須與字邊界對齊 (即 4 位元組)。程式狀態字中的條件碼欄位不會改變。
- 目標地址必須在有效記憶體範圍內,否則會發生操作異常。
- 目標地址必須與字邊界對齊,否則會發生地址異常。
- 目標地址的儲存金鑰必須與當前程序相同 (或程序必須具有金鑰 0 的許可權),否則會發生記憶體保護違規異常。
最密切相關的指令
[編輯原始碼]最密切相關的指令是 Add Logical Register (ALR) 而不是 Load Address (LA),正如有時所假設的那樣。而 L 從記憶體中載入值,LA 不會訪問記憶體;它只計算一個數字,這個數字可以但不一定是地址。
32 位指令
[編輯原始碼]- 要從記憶體中載入 8 位位元組 (字元) 值,請參見 IC。
- 要根據掩碼將一個或多個 8 位位元組值載入到暫存器中,請參見 ICM
- 要從記憶體中載入 16 位半字值,請參見 LH。
- 要將 12 位無符號值載入到暫存器中,或將最多 4095 新增到一個或兩個 32 位暫存器的值中,請參見 LA。
- 要將 32 位字值從一個暫存器複製到另一個暫存器,請參見 LR。
- 要從記憶體中載入 32 位字值,請參見 L。
- 要將 8 位位元組 (字元) 值儲存到記憶體中,請參見 STC。
- 要根據掩碼將一個或多個 8 位位元組值儲存到記憶體中,請參見 STCM
- 要將 16 位半字值儲存到記憶體中,請參見 STH。
- 要將 32 位字值儲存到記憶體中,請參見 ST。
64 位指令
[編輯原始碼]- 要將 20 位有符號值從擴充套件 (20 位) 有符號記憶體偏移量載入到 32 位或 64 位暫存器中,請參見 LAY。
- 要將 32 位值從擴充套件 (20 位) 有符號記憶體偏移量載入到 64 位暫存器中,請參見 LGF。
- 要將 64 位值從一個 64 位暫存器複製到另一個 64 位暫存器,請參見 LGR。
- 要將 64 位值從記憶體載入到 64 位暫存器中,請參見 LG。
- 要將 32 位值從暫存器儲存到擴充套件 (20 位) 有符號記憶體偏移量中,請參見 STY。
- 要將 64 位值從 64 位暫存器儲存到記憶體中的地址,請參見 STG。
| 上一條指令 SSM |
360 彙編指令 | 下一條指令 STAP |
| 上一個操作碼 4F |
下一個操作碼 51 |
| 360 組合語言 | |
| 360 系列 | 介紹 · 基本常見問題解答 · 360 系列 · 360 架構 |
|---|---|
| 360 指令集 | 360 指令 · 分支指令 · 資料傳輸指令 · 控制流指令 · 算術指令 · 邏輯指令 · 移位和旋轉指令 · 特權指令 · 其他指令 |
| 語法和彙編器 | 360 彙編器· 偽指令 |
| 指令擴充套件 | 浮點數 · 高階語言 |
| 此頁面或部分是一個未完成的草稿或概要。 您可以幫助開發工作,或者您可以在專案室中尋求幫助。 |