跳轉到內容

360 彙編/360 指令/L

來自華夏公益教科書,自由的教科書

L - 載入 - 操作碼 58 - RX 格式指令(32 位)

L 2,N2
L 11,106(8,10)

具體的語法是

L 目標暫存器,偏移量(索引暫存器,基址暫存器)

其中偏移量索引暫存器基址暫存器的值由彙編器自動確定,如果使用USING偽指令,並且目標地址標籤在某個基址暫存器值的 4096 位元組範圍內。

操作碼

[編輯 | 編輯原始碼]
RX 指令(4 位元組)
位元組 1 位元組 2 位元組 3 和 4
目標暫存器 源地址
(十六進位制) (8 位)
操作碼
58
(4 位)

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

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

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

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

可用性

[編輯 | 編輯原始碼]

L 指令在所有 360、370 和 z/System 模型上都可用。

L 指令從引數指定的記憶體地址讀取一個 32 位整數值,並將其放入第一個引數指定的暫存器中。64 位暫存器的高位保持不變。

源引數地址應對齊到字邊界(即 4 位元組)。程式狀態字中的條件碼欄位不會改變。

異常和錯誤

[編輯 | 編輯原始碼]
  • 源地址必須在有效記憶體範圍內,否則會發生操作異常。
  • 源地址必須對齊到字邊界,否則會發生地址異常。
  • 源地址的儲存金鑰必須允許當前程序讀取該位置(或程序必須具有金鑰為零的特權),否則會發生記憶體保護衝突異常。
[編輯原始碼]

最密切相關的指令是邏輯暫存器加法 (ALR),而不是有時假設的載入地址 (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.
上一個指令
KXBR
360 彙編指令
{{{name}}}
下一個指令
LA
上一個操作碼
57
下一個操作碼
59
360 組合語言
360 系列 介紹 · 基本常見問題解答 · 360 系列 · 360 架構
360 指令集 360 指令 · 分支指令 · 資料傳輸指令 · 控制流指令 · 算術指令 · 邏輯指令 · 移位和旋轉指令 · 特權指令 · 其他指令
語法和彙編器 360 彙編器· 偽指令
指令擴充套件 浮點數 · 高階語言


華夏公益教科書