跳转到内容

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.
华夏公益教科书