PIC中档单片机汇编指令详解(3)

ADDWF W寄存器内容和f数据寄存器内容相加oop

语法形式: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,就跳到这条指令

相关文章
相关标签/搜索