ADDWF W寄存器内容和f数据寄存器内容相加
语法方式:ADDWF f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为意图寄存器的低7位地址(0x00~0x7F)
当d=f时,成果放在f数据寄存器,W寄存器的内容不变
当d=W时,成果放在W寄存器中,f数据寄存器的内容不变
履行时间:一个指令周期
履行进程:【f】+【W】→d
状况标志影响:Z DC C
阐明:数据寄存器内容和W寄存器内容相加,成果放入d指定的当地
指令典范:
MOVLW 0x55 ;W=0x55,假定Sum=0xAA
ADDWF Sum,f ;W不变,Sum=0xFF
MOVF 传送f数据寄存器的内容到意图寄存器
语法方式:MOVF f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为意图寄存器的低7位地址(0x00~0x7F)
当d=f时,把数据寄存器的内容放回自己本身,意图用于判别数据寄存器的内容是否为0。
当d=W时,成果放在W寄存器中,将数据寄存器f的内容传送至W寄存器
履行时间:一个指令周期
履行进程:【f】→d
状况标志影响:Z
阐明:将数据寄存器的内容传送至它处,或许对f数据寄存器的内容做判0操作,假如传送的数据是0,则置位Z标志。
指令典范:
例1:数据传送
MOVF Var1,W ;Var1内容传送至W寄存器
MOVWF Var2 ;W寄存器内容传送至Var2,此刻Var1=Var2
例2:数据判0
MOVF Var3,f ;Var3寄存器内容被送往本身,其他寄存器内容不变,可是影 响Z标志
BTFSC STATUS,Z ;假如Var3不等于0,则越过下一条指令
GOTO Var3Zero ;假如Var3等于0,则转向其他操作
COMF f数据寄存器内容取反
语法方式:COMF f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为意图寄存器的低7位地址(0x00~0x7F)
当d=f时,成果放在f数据寄存器,W寄存器的内容不变
当d=W时,成果放在W寄存器中,f数据寄存器的内容不变
履行时间:一个指令周期
履行进程:!【f】→d
状况标志影响:Z
阐明:求数据寄存器内容的反码,求一个数的补码能够运用这个指令完结(按位求反再加一)
指令典范:
COMF num,f ;对num变量取反码
INCF num,f ;反码加1便是其补码
DECFSZ 数据寄存器内容递减1,并作判0标志
语法方式:DECFSZ f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为意图寄存器的低7位地址(0x00~0x7F)
当d=f时,成果放在f数据寄存器,W寄存器的内容不变
当d=W时,成果放在W寄存器中,f数据寄存器的内容不变
履行时间:一个指令周期或两个指令周期
履行进程:【f】-1→d
状况标志影响:Z
阐明:该指令将首先将f数据寄存器的内容做减1运算,成果放到d指定的意图地址内,一起它还会对Z标志进行判0操作(进行分支跳转操控);假如f数据寄存器减1后成果非0,那么Z=0,程序将次序履行下一条指令,本次指令操作消耗一个指令周期;假如成果为0,那么Z=1,此刻程序将会越过紧跟这以后的第一条指令,去履行紧跟这以后的第二条指令,本次指令操作消耗两个指令周期。该指令常用于计数次数或许循环次数的操控。
指令典范:
MOVLW 0x10 ;预备给循环计数器赋初值
MOVWF Count ;此刻循环计数器Count=0x10
Loop:DECFSZ Count,f ;Count递减1,成果放入Count中,并进行Z标志判 GOTO Loop ;断,假如递减后成果不为0,持续履行Loop操作, ;一共循环0x10(16进制)次。
NOP ;假如递减后成果为0,就跳到这条指令