2017/8/29
19
(一)DECFSZ 指令在循环程序中的应用
指令格式: DECFSZ
f,d
----- decrease if f=0 then skip
说明:对文件寄存器f-1→f,如果f=0则跳一步(skip), 否则顺序执行下一条指令。 编制固定次数循环程序时往往采用一个f 做“循环计数 器 ”: 选择一个文件寄存器 f 做“循环计数器”,该寄存器预先 装载一个初值N (N=循环次数); 利用DECFSZ指令作为循环控制语句:每执行一次循环便 执行一次DECFSZ,当f=0时通过指令的skip操作跳出循 环体,结束整个循环。
2017/8/29 8
(二)无条件分支指令 BRA n ---- branch
格式:
BRA
n
;PC+2+2n→PC
功能:实现-1024~+1023范围内的转移; 说明:2B字节指令,其中高5位操作码、低11位为偏移量, 采用补码的形式。实际编程中使用“符号地址”替代偏移 量补码,以简化编程。
3.
BNZ只是对现在状态寄存器Z标志进行判断。而Z标志借 用前面的 DECF F,1 指令运行结果来影响的。
29
2017/8/29
练
习
试用DECFSZ和BNZ两种指令完成: 将PORTC口输入的数据乘以4,在通过PORTB口输出。 【提示】: 1. 首先要将端口的方向寄存器TRISC(F94H)置0xff、 TRISB(F93H)置0x00; 2. 方向寄存器 TRISC的地址=F94H, TRISB的地址=F93H; 3. 端口寄存器PORTC的地址=F82H, PORTB的地址=F81H.