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 汇编器· 伪指令 |
指令扩展 | 浮点数 · 高级语言 |
此页面或部分是一个未开发的草稿或提纲。 您可以帮助开发作品,或者您可以在项目室中寻求帮助。 |