dsp
1、条件分支转移。
BC sub,BLET ;若累加器B<=0,则转至sub,否则往下执行
BC start,AGET,AOV ;若累加器A>=0且溢出,则转至start,否则往下执行 BC loop,NTC ;若TC=0,则转向loop,否则往下执行
写在单条指令中的多个条件是“与”逻辑关系。如果需要两个条件“或”,只能分 两行写成两条指令。例如,例题中的第一条指令改为“若累加器A大于0或溢出,则 转移至sub”,可以写成如下两条指令:
BC sub,AGT
BC sub,AOV
2计算y=∑a x (i:0~4)
.title “example.asm”
.mmregs
stark .usect “STACK”,10h
.bss a,4
.bss x,4
.bss y,1
.def start
.data
table: .word 1,2,3,4
.word 8,6,4,2
.text
Start: STM #0,SWWSR
STM #STACK+10h,SP
STM #a,AR1
RPT #7
MVPD table,*AR1+
CALL SUM
end: B end
SUM: STM #a,AR3
STM #x,AR4
RPTZ A,#3
MAC *AR3+,*AR4+,A
STL A,@y
RET
.end
;为堆栈指定空间 ;为变量分配9个字的空间 ;变量初始化 ;插入0个等待状态 ;设置堆栈指针 ;AR1指向a ;移动8个数据 ;从程序存储器到数据存储器 ;调用SUM子程序 ;子程序执行