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.