跳至内容

360 汇编/360 指令/AL

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

AL - 逻辑加 - 操作码 5E

AL 2,N2
AL 11,106(0,10)

具体的语法是

AL 目标寄存器,偏移量(索引寄存器,基址寄存器)

如果使用了 USING 伪指令,并且目标地址标签位于某个基址寄存器值的 4096 字节内,那么汇编器将自动确定偏移量索引寄存器基址寄存器的值。

RX 指令 (4 字节)
字节 1 字节 2 字节 3 和 4
目标寄存器 源地址
(8 位)
操作码
5E
(4 位)

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

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

0..F
(12 位)
偏移量
0..FFF
  • 第一个参数是目标寄存器,它在操作之前包含第一个加数,在操作之后包含结果。
  • 第二个参数是源值(第二个加数)的位置。
  • 掩码基址寄存器索引寄存器的值为 0 到 15。偏移量值为 0 到 4095。

可用性

[编辑 | 编辑源代码]

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

AL 指令从参数指定的内存地址读取 32 位整数,并将其添加到第一个参数指定的寄存器值。33 位结果和的最低有效 32 位被放置到目标寄存器。程序状态字中的条件代码字段根据结果值(和)进行更改,该结果值被视为无符号整数(见下文)。

源参数地址应与字边界对齐(即 4 字节)。

条件代码

[编辑 | 编辑源代码]

如果和不为零,则 PSW 的 CC 字段的最低有效位被置位,否则被清除。PSW 的 CC 字段的最高有效位保持进位位(即 33 位和的最高有效位)。

异常和故障

[编辑 | 编辑源代码]
  • 源地址必须在有效内存范围内,否则会发生操作异常。
  • 源地址的存储密钥必须与当前进程相同,否则会发生内存保护违规异常。

AL 和 ALR 指令对于在打算在 24 位或 31 位地址空间中运行的代码中实现长度超过 32 位的整数加法很有用。在这种情况下,应该使用 AL 或 ALR 来计算和的所有部分(可能除了最高有效部分),并且,如果在加法之后 CC 为 2 或 3(即发生了进位),则递增和的最近较高部分。

[编辑 | 编辑源代码]
  • 要从寄存器中逻辑加值,请参见 ALR
  • 要从内存中算术加值,请参见 A
  • 要减去整数,请参见 SSRSHSLSLR
  • 要检查条件代码,请参见 BCBCR
上一条指令
AHI
360 汇编指令
{{{name}}}
下一条指令
ALC
上一条操作码
5D
下一条操作码
5F
360 汇编语言
360 家族 简介 · 基本常见问题解答 · 360 家族 · 360 架构
360 指令集 360 指令 · 分支指令 · 数据传输指令 · 控制流指令 · 算术指令 · 逻辑指令 · 移位和旋转指令 · 特权指令 · 其他指令
语法和汇编器 360 汇编器· 伪指令
指令扩展 浮点 · 高级语言


华夏公益教科书