跳转到内容

360 汇编/360 指令/EX

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

EX - EXecute - 操作码 X / 十进制

BCTR R1,0
EX R1,LABEL
LABEL PACK PACKIT,0(L,R3)
L 将被替换为 R1 的最后一个字节值

操作码

[编辑 | 编辑源代码]

可用性

[编辑 | 编辑源代码]

EX 指令在所有型号上都可用,包括 360、370 和 z/System。EX(执行)

EX R5,TARGET 这用于在执行目标代码之前稍微修改目标代码。如果第一个操作数不是 R0,则只能修改目标代码。


这里,如 X(0) 所示,这个零用于声明要从 Y 移动到 X 的字节长度。当 EXE 指令执行时,它将执行 MVC 指令中长度位字段的右侧字节与寄存器的右侧字节进行按位或运算。现在,目标代码指的是这里的 MVC 代码。

因此,现在将从 Y 复制 4 个字节到 X 字段。我们可以通过更改寄存器 5 中的值来根据需要更改字段。


更多示例::R4 = X

’00000005’ R5 = X

’FFFFFF04’ R6 = X

’00000034’

the values stored previously in those registers......


这里显示了一些目标代码的机器码................... TARGET1 MVC FIELDA(0),FIELDB * 机器码:D2 00 C0 10 C0 20

TARGET2 AP FIELDC(0),FIELDD(0) * 机器码:FA 00 C0 22 C0 34

TARGET3 LR R0,R0 * 机器码:18 00

................................................................................................



///////// 由于 R4 的最右侧字节 = x'05' = 05,因此将从 FIELDB 复制 6 个字节到 FIELDA EX R4,TARGET1

///////// 由于 R5 的最右侧字节 = x'04' = 04,因此将从 FIELDB 复制 5 个字节到 FIELDA

EX R5,TARGET1

///////// 由于 R6 的最右侧字节 = x'34' = 52,因此将从 FIELDB 复制 53 个字节到 FIELDA EX R6,TARGET1


//////// 由于 R6 的最右侧字节 = x'34',因此第一个 nibble 将用于 FIELDC,第二个 nibble 将用于 FIELDD

EX R6,TARGET2

////// FIELDD(5 个字节)加到 FIELDC(4 个字节)中,并存储到 FIELDC 中。


//////// 由于有两个 R0,这意味着两个 nibble 加在一起是 x'00'

EX R6,TARGET3

//////// 由于 R6 的最右侧字节 = x'34',因此在执行 EX 指令后机器码将变为 x'18 34'

//////// 并且寄存器 4 的内容将被加载到寄存器 3 中

指令目的

[编辑 | 编辑源代码]

EX 指令用于允许程序修改自身以更改其他指令的某些参数,而无需实际修改程序的代码。一个用法可能是移动 256 个字节或更少的字符串,通过执行 EX 指令更改该指令中的长度值来执行 MVC 指令。

典型用法

[编辑 | 编辑源代码]

EX 指令将 R1 寄存器的低字节与目标指令的第二个字节(通常是长度)进行按位或运算(不是替换,而是按位或运算),然后执行该指令。

第二个用途是通过编码 Ex 0,* 生成一个故意的 S0C3 异常,这会产生一个良好的转储,并且不会像使用 ABEND 宏时那样改变寄存器 14-1。这种技术并不专门为 IBM 使用,正如一些人所坚持的那样。

异常和错误

[编辑 | 编辑源代码]
  • 如果目标指令本身是 EX 指令,则会发生执行异常
  • 如果目标指令不在偶数地址上,则会发生地址异常
  • 如果目标指令不包含有效的操作码,则会发生操作异常
  • 如果目标指令是特权指令,则会发生保护冲突异常,除非此任务在 PSW 中设置了特权位
  • 如果要执行的指令发生了异常,则将抛出该异常
上一条指令
XXX
360 汇编指令   下一条指令
XX
上一个操作码
00
下一个操作码
00
360 汇编语言
360 系列 简介 · 基本常见问题解答 · 360 系列 · 360 架构
360 指令集 360 指令 · 分支指令 · 数据传输指令 · 控制流指令 · 算术指令 · 逻辑指令 · 移位和旋转指令 · 特权指令 · 其他指令
语法和汇编器 360 汇编器 · 伪指令
指令扩展 浮点 · 高级语言


华夏公益教科书