ZHCU875Z August 2001 – October 2023 SM320F28335-EP
在宏中,可通过使用下标和强制的替代运算符(符号和下标周围的冒号)来访问替代符号的单个字符(子字符串)。可通过两种方式访问子字符串:
以下示例显示了带下标的替代符号函数。在第一个示例中,带下标的替代符号重新定义了 STW 指令,以便它能够处理立即数。在第二个示例中,带下标的替代符号用于查找从字符串 strg2 中的 start 位置开始的子字符串 strg1。子字符串 strg1 的位置被分配给替代符号 pos。
ADDX .macro ABC
.var TMP
.asg :ABC(1): , TMP
.if $symcmp(TMP, "#") = 0
ADD ACC, ABC
.else
.emsg "Bad Macro Parameter"
.endif
.endm
ADDX #100 ;macro call
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