跳转到内容

360 汇编/360 指令/AH

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

AH - 加半字 - 操作码 4A

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

具体的语法是

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

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

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

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

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

0..F
(12 位)
偏移量
0..FFF
  • 第一个参数是目标寄存器,其值受指令的影响。
  • 第二个参数是源值的位置。
  • 掩码基址寄存器索引寄存器的值为 0 到 15。偏移量值为 0 到 4095。

可用性

[编辑 | 编辑源代码]

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

AH 指令从参数指定的内存地址读取 16 位整数,将其扩展为 32 位有符号整数,并将其添加到第一个参数指定的寄存器的值中。程序状态字中的条件代码字段根据结果值进行更改。

扩展是通过将源值的最重要位复制到扩展值的较高 16 位来完成的。

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

条件代码

[编辑 | 编辑源代码]

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

异常和故障

[编辑 | 编辑源代码]
  • 如果检测到有符号整数溢出并且 PSW 中的位 36 设置为 1,则发生操作异常。
  • 目标地址必须在有效内存范围内,否则会发生操作异常。
  • 源地址的存储密钥必须与当前进程相同,否则会发生内存保护违规异常。
[编辑 | 编辑源代码]
  • 要从寄存器添加值,请参见AR
  • 要从内存添加字值,请参见A
  • 要根据无符号算术添加值并设置条件代码,或添加多字整数值的非最高有效部分,请参见ALALR
  • 要添加浮点数,请参见AEAERADADR
  • 要从内存中减去半字值,请参见SH
上一条指令
AER
360 汇编指令
{{{name}}}
下一条指令
AR
上一条操作码
49
下一条操作码
4B
360 汇编语言
360 系列 简介 · 基本常见问题解答 · 360 系列 · 360 架构
360 指令集 360 指令 · 分支指令 · 数据传输指令 · 控制流指令 · 算术指令 · 逻辑指令 · 移位和旋转指令 · 特权指令 · 其他指令
语法和汇编器 360 汇编器 · 伪指令
指令扩展 浮点 · 高级语言


华夏公益教科书