360 汇编/360 指令/TRT
外观
TRT - SS - 操作码 DD - 扫描数据字符串,查找一个或多个特定字符。
TRT 指令扫描一个字段,查找特定的字节。TRT 不会改变任何数据。D1 字段包含要扫描的数据的地址。D2 字段包含一个 256 字节表的地址,该表中的每个字节都包含 X'00' 或非零字节,在 HEX 表中被搜索的字节的偏移处。TRT 设置条件代码,指示目标字符是否被找到。
可用性
TRT 指令在所有型号上都可用。
注意
TRT 改变寄存器 1 和 2。TRT 是唯一改变 reg-2 作为操作一部分的指令,因此,如果您使用 TRT,则不要使用 reg-2 作为您的基址。
指令的目的
TRT 指令搜索特定的字节。例如,如果您想找到 C'D' 或 C'K' 的下一个出现位置,您可以编码
TRT DATA,SRCHTBL BZ NOTFOUND
SRCHTBL DC XL256'00'
ORG SRCHTBL+C'D' DC X'04' ORG SRCHTBL+C'K' DC X'08' ORG
条件代码等
- 如果没有找到字符,则条件代码设置为 0。
如果找到字符
- 扫描终止
- 寄存器 1 指示找到的数据字符的地址。
- 扫描表中非零的字节被放置到 reg-2 的低字节中。reg-2 的其余字节保持不变。这是唯一一条在没有指定 reg-2 的情况下改变寄存器 2 的指令。
- 如果找到的字符是扫描字段的最后一个字符,则条件代码设置为 2;否则,设置为 1。
转换和测试是在微代码中实现的。一次检查一个字节,直到找到一个字节,或者扫描的数据耗尽。
异常和故障
Protection Exception - the source or the target is outside of the legal address range assigned to this task
示例,查找打印行上的非空白字符。
TRT LINE,NONBLANK BZ ALLBLANK
- REG-1 包含非空白字符的地址
NONBLANK DC 256C' '
ORG NONBLANK+C' ' DC X'00' ORG
示例,测试打包字段。
SR 2,2 TRT PACKDATA,TRTPACK TEST THE PACKED FIELD WITH 'C', 'D', OR 'F' SIGN BC 2,GOODDATA IF ANY SIGN '0A' - '0F' IS GOOD, USE THIS. B BRTBL(2) TO RESTRICT SIGNS TO '0C' '0D' AND '0F', USE THIS.
BRTBL B NOTFOUND
B GOODDATA B BADSIGN B BADDATA
TRTPACK DC 256X'0C'
ORG TRTPACK DC 10X'00',XL6'080804040804',10X'00',XL6'080804040804' ORG TRTPACK+X'20' DC 10X'20',XL6'080804040804',10X'00',XL6'080804040804' ORG TRTPACK+X'40' DC 10X'40',XL6'080804040804',10X'00',XL6'080804040804' ORG TRTPACK+X'60' DC 10X'60',XL6'080804040804',10X'00',XL6'080804040804' ORG TRTPACK+X'80' DC 10X'80',XL6'080804040804',10X'00',XL6'080804040804' ORG
相关指令
TR is slightly related, although it's function is very different.