跳轉至內容

360 彙編/360 指令/ST

來自 Wikibooks,開放的書,開放的世界

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 彙編器· 偽指令
指令擴充套件 浮點數 · 高階語言


華夏公益教科書