ZHCU947E June 2015 – January 2023
在宏中,可通过使用下标和强制的替代运算符(符号和下标周围的冒号)来访问替代符号的单个字符(子字符串)。可通过两种方式访问子字符串:
以下示例显示了带下标的替代符号函数。在第一个示例中,带下标的替代符号重新定义了 STW 指令,以便它能够处理立即数。在第二个示例中,带下标的替代符号用于查找从字符串 strg2 中的 start 位置开始的子字符串 strg1。子字符串 strg1 的位置被分配给替代符号 pos。
storex .macro x
.var tmp
.asg :x(1):, tmp
.if $symcmp(tmp,"A") == 0
STW x,*A15--(4)
.elseif $symcmp(tmp,"B") == 0
STW x,*A15--(4)
.elseif $iscons(x)
MVK x,A0
STW A0,*A15--(4)
.else
.emsg "Bad Macro Parameter"
.endif
.endm
storex 10h
storex A15
substr .macro start,strg1,strg2,pos
.var len1,len2,i,tmp
.if $symlen(start) = 0
.eval 1,start
.endif
.eval 0,pos
.eval start,i
.eval $symlen(strg1),len1
.eval $symlen(strg2),len2
.loop
.break I = (len2 - len1 + 1)
.asg ":strg2(i,len1):",tmp
.if $symcmp(strg1,tmp) = 0
.eval i,pos
.break
.else
.eval I + 1,i
.endif
.endloop
.endm
.asg 0,pos
.asg "ar1 ar2 ar3 ar4",regs
substr 1,"ar2",regs,pos
.word pos