跳转到内容

360 汇编/360 指令/LGR

来自 Wikibooks,开放世界开放书籍

LGR - 加载寄存器 - 64 位 - 操作码 B904 - RRE 指令

LGR 2,6

具体的语法是

LGR 目标寄存器, 源寄存器
RRE 指令(4 字节)
字节 1 和 2 字节 3 字节 4
目标寄存器 源寄存器
(16 位)
操作码
B904
(8 位)
未使用
(4 位)

0..F
(4 位)

0..F
  • 第一个参数是目标寄存器,其值受指令影响。
  • 第二个参数是源值寄存器。

可用性

[编辑 | 编辑源代码]

LGR 指令是 64 位的,并且仅在 370 系列和 z/System 上可用。它将在 360 系列上导致操作码异常。

LGR 指令将第二个参数指定的寄存器中的 64 位值复制到第一个参数指定的寄存器中。

条件代码不会改变。

寄存器 0 对任何寄存器都是有效的,不像某些其他指令那样被忽略。

异常和故障

[编辑 | 编辑源代码]
  • 360 系列:操作码异常
  • 370 系列和 zSystem:无。
[编辑源代码]

最密切相关的指令是逻辑加寄存器 (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


上一条指令
LGHR
360 汇编指令   下一条指令
LH
上一个操作码
B903
下一个操作码
B905
360 汇编语言
360 家族 介绍 · 基本常见问题解答 · 360 家族 · 360 架构
360 指令集 360 指令 · 分支指令 · 数据传输指令 · 控制流指令 · 算术指令 · 逻辑指令 · 移位和旋转指令 · 特权指令 · 其他指令
语法和汇编器 360 汇编器· 伪指令
指令扩展 浮点数 · 高级语言


华夏公益教科书