跳转到内容

360 汇编/360 指令/SR

来自维基教科书,开放世界中的开放书籍

SR - 减去寄存器 - 操作码 1B

SR 2,1

具体的语法是

SR 目标寄存器, 源寄存器.
RR 指令(2 字节)
字节 1 字节 2
目标寄存器 源寄存器
(8 位)
操作码
1B
(4 位)

0..F
(4 位)

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

可用性

[编辑 | 编辑源代码]

SR 指令在所有型号的 360、370 和 z/System 上都可用。

SR 指令从第二个参数指定的寄存器中读取 32 位整数,并将其从第一个参数指定的寄存器值中减去。执行指令后,第一个参数指定的寄存器将保存操作结果。程序状态字中的条件代码字段会根据结果值进行更改。

此指令也可以用于使两个寄存器参数相同以将该寄存器清零。如果 XR 指令中的两个参数是同一个寄存器,则会发生相同的功能。

条件代码

[编辑 | 编辑源代码]

如果发生有符号整数溢出,即差值不在 -2**31 和 2**31-1 之间,则 CC 设置为 3。否则,CC 设置为 0、1 或 2,如果差值分别等于零、小于零或大于零。

异常和故障

[编辑 | 编辑源代码]
  • 如果检测到有符号整数溢出并且 PSW 中的位 36 设置,则会发生操作异常。
[编辑 | 编辑源代码]
  • 要从 z/Series 上两个寄存器的完整 64 位双字中减去双字值,请参见 SGR.
  • 要从 z/Series 上另一个寄存器的完整 64 位双字中减去字值,请参见 SGFR.
  • 要从 z/Series 上内存中的 64 位双字中减去完整 64 位双字寄存器,请参见 SG.
  • 要从 z/Series 上内存中的 32 位字中减去完整 64 位双字寄存器,请参见 SGF.
  • 要从内存中减去字值,请参见 S.
  • 要从内存中减去半字值,请参见 SH.
  • 要减去值并根据无符号算术设置条件代码,或者添加多字整数的最重要部分,请参见 SLSLR.
  • 要减去 32 位字浮点值,请参见 SESERSDSDR.
  • 要添加 32 位字整数,请参见 ARAAHALALR.
  • 要检查条件代码,请参见 BCBCR.
上一条指令
SQXR
360 汇编指令
{{{name}}}
下一条指令
SRA
上一个操作码
1A
下一个操作码
1C
360 汇编语言
360 系列 简介 · 常见问题解答 · 360 系列 · 360 架构
360 指令集 360 指令 · 分支指令 · 数据传输指令 · 控制流指令 · 算术指令 · 逻辑指令 · 移位和旋转指令 · 特权指令 · 其他指令
语法和汇编器 360 汇编器· 伪指令
指令扩展 浮点 · 高级语言


华夏公益教科书