如何在 IBM (HLASM) 中使用显式寻址

And*_*res 2 assembly mainframe zos addressing-mode s390x

我一直在网上寻找有关显式寻址的信息,但什么也没有,而且解释很模糊。我希望有人可以详细解释我,如果可能的话,还可以举个例子。我想知道,应该使用哪些寄存器作为索引,基数,位移值应该是什么

示例 8(,4) 或 5(0,5) 或 6(7)

Hog*_*rom 5

它可以取决于正在执行的指令。请参阅 IBM 的参考资料以帮助整理详细信息。作为一个老 Z 表演者,当人们问起有关表演的问题时,答案几乎总是“这取决于”

看这篇文章

未在机器指令的符号汇编语言表示中显式编码但仍被汇编机器指令使用的寄存器分为两类: 隐含在指定符号地址中的基址寄存器。(请参阅地址。)可以通过检查目标代码或为源模块分配基址寄存器的 USING 指令来识别寄存器。

机器指令使用的寄存器,但不出现在汇编目标代码中。对于双移位和全字乘法和除法指令,奇数寄存器,其编号比指定为第一个操作数的偶数寄存器大一个。

对于 Move Long 和 Compare Logical Long 指令,奇数寄存器,其编号比两个操作数中指定的偶数寄存器大 1。

对于索引高分支 (BXH) 和索引低或等于 (BXLE) 指令的分支,如果为第二个操作数指定的寄存器是偶数寄存器,则使用下一个更高的奇数寄存器来包含值用于比较。

对于 Load Multiple (LM, LAM) 和 Store Multiple (STM, STAM) 指令,寄存器位于前两个操作数中指定的寄存器之间。

对于扩展精度浮点指令,寄存器对中的第二个寄存器。

对于比较和形成代码字 (CFC) 指令,使用寄存器 1、2 和 3。> 对于翻译和测试 (TRT) 指令,使用寄存器 1 和 2。对于更新树 (UPT) 指令,使用寄存器 0-5。

对于编辑和标记 (EDMK) 指令,使用寄存器 1。对于某些控制指令,使用寄存器 0-4 和寄存器 14 中的一个或多个。请参阅适用的 z/Architecture 操作原理手册中的“控制说明”。

对于某些输入和输出指令,使用寄存器 1 和 2 中的一个或两个。请参阅适用的 z/Architecture 操作原理手册中的“输入/输出指令”。在带有矢量工具的处理器上:

  1. 对于操作向量寄存器中长浮点数据的指令,奇数向量寄存器,其编号比每个操作数中指定的偶数向量寄存器大一。

  2. 对于在向量寄存器中操作 64 位带符号二进制数据的指令,奇数向量寄存器,其编号比每个操作数中指定的偶数向量寄存器大 1。