INCFSZ f数据寄存器内容递加1,并作判0标志
语法方式:INCFSZ f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为意图寄存器的低7位地址(0x00~0x7F)
当d=f时,成果放在f数据寄存器,W寄存器的内容不变
当d=W时,成果放在W寄存器中,f数据寄存器的内容不变
履行时间:一个指令周期或两个指令周期
履行进程:【f】+1→d
状况标志影响:Z
阐明:该指令首要对数据寄存器的内容做加1操作,成果依照d的指示保存到相应的当地,然后对Z进行判0操作(分支跳转操控):假如加1之后的成果非0,也便是Z=0,程序将会依照次序履行下一条指令,运用1个指令周期;假如加1之后成果为0,也便是Z=1,那么程序将会越过INCFSZ指令之后的第一条指令,开端履行第二条指令,运用2个指令周期。该指令常用于计数次数和循环次数的操控。
指令典范:
MOVLW 0xC0 ;循环计数数据赋初值
MOVWF Count ;此刻循环计数器初值Count=0xC0
Loop:INCFSZ Count,f ;Count内容加1,放回Count中,并进行Z标志判别
GOTO Loop ;假如加1之后的成果不为0,则循环履行Loop的内 容,一共循环次数为0x00-0xC0=0x40次
NOP ;成果为0,则跳到这条指令
RRF 数据寄存器内容带进位的循环右移
语法方式:RRF f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为意图寄存器的低7位地址(0x00~0x7F)
当d=f时,成果放在f数据寄存器,W寄存器的内容不变
当d=W时,成果放在W寄存器中,f数据寄存器的内容不变
履行时间:一个指令周期
履行进程:
状况标志影响:C
阐明:该指令把C进位寄存器(借位寄存器)和数据寄存器的8位数据结合在一起做9位的循环右移1位的操作。操作的成果是把C移到数据寄存器的最高位,原数据寄存器的最低位放到C中。
指令典范:
例1:完成数据寄存器自身8位的循环右移
RRF Data,W ;数据寄存器Data的内容右移1位,成果放入W寄存器,Data自身 的内容不变,可是最低位现已移到C中
RRF Data,f ;再次进行右移,成果写入Data自身。这时上一条指令移入C中的最低位现在现已变成Data的最高位,完成了最低位变最高位,最高位变成第二高位的意图
例2:完成数据寄存器管用右移(除2操作)
BCF STATUS,C ;保证C=0
RRF Data,f ;数据寄存器右移1位,最高位现在为0,成果放入自身
RLF 数据寄存器内容进行带进位的循环左移操作
语法方式:RLF f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为意图寄存器的低7位地址(0x00~0x7F)
当d=f时,成果放在f数据寄存器,W寄存器的内容不变
当d=W时,成果放在W寄存器中,f数据寄存器的内容不变
履行时间:一个指令周期
履行进程:
状况标志影响:C
阐明:该指令将C和8位数据寄存器的数据结合起来进行9位的循环左移操作,成果放入d指定的方位。操作成果是把C移到数据寄存器的最低位,将原数据寄存器的最高位移入C中。
指令典范:
例1:完成数据寄存器的8位内容循环左移
RLF Data,W ;Data的内容左移1位放入W寄存器中,Data的内容不变,Data的 最高位放入C中
RLF Data,f ;Data的内容经操作后放回自身,C的内容(经上步操作后变成了原Data的最高位)放入Data的最低位。
例2:完成数据寄存器的管用左移(成果乘以2)
BCF STATUS,C ;保证C=0
RLF Data,f ;数据寄存器Data左移1位,最低位弥补为0,完成乘以2
SWAPF 数据寄存器凹凸半字节内容进行交流
语法方式:SWAPF f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为意图寄存器的低7位地址(0x00~0x7F)
当d=f时,成果放在f数据寄存器,W寄存器的内容不变
当d=W时,成果放在W寄存器中,f数据寄存器的内容不变
履行时间:一个指令周期
履行进程:【f<3:0>】←→【f<7:4>】
状况标志影响:无
阐明:该指令完成把数据寄存器的凹凸半字节的内容进行交流,成果放入d指定的地址。该指令在中止服务程序退出前康复W寄存器的内容的进程中起着不可或缺的效果。不影响状况寄存器。
指令典范:
SWAPF w_temp,f ;w_temp的凹凸半字节内容交流,成果放回w_temp自身
SWAPF w_temp,W ;w_temp的凹凸半字节内容再次交流,可是成果放入W寄存器中,在不影响状况寄存器的前提下,完成了把w_temp的原内容复制到W寄存器中。