2.块程序重复操作
块程序重复操作RPTB将重复操作的范围扩大到任意长度的循环回 路。由于块程序重复指令RPTB的操作数是循环回路的结束地址,而 且,其下条指令就是重复操作的内容,因此必须先用STM指令将所 规定的迭代次数加载到块重复计数器(BRC)中。 RPTB指令的特点是:对任意长度的程序段的循环开销为0,其本 身是一条2字4周期指令;循环开始地址(RSA)是RPTB指令的下一 行,结束地址(REA)由RPTB指令的操作数规定。 【例6-10】对数组x[5]中的每个元素加1。 .bss x,5 start: LD #1,16,B STM #4,BRC STM #x,AR4 RPTB next-1 ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B
2.循环操作BANZ
在程序设计时,经常需要重复执行某段程序,利用 BANZ(当辅助寄存器不为0时转移)指令执行循环计数 和操作是十分方便的。 SUM: STM STM loop: ADD BANZ STL #x,AR3 #4,AR2 *AR3+,A loop,*AR2A,@y
;程序存储器
3.比较操作CMPR
【例6-7】计算 y =
a x
i 1
4
i i
程序: ******************************************** * example.asm * ******************************************** .title “example.asm” .mmregs ;为堆栈指定空间 stack .usect “STACK”,10h .bss a,4 ;为变量分配9个字的空间 .bss x,4 .bss y,1 .def start .data ; 变量初始化 table: .word 1,2,3,4 .word 8,6,4,2 .text