zoukankan      html  css  js  c++  java
  • PIC中档单片机汇编指令详解(3)

    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,就跳到这条指令

  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
  • 原文地址:https://www.cnblogs.com/wangluojisuan/p/3021656.html
Copyright © 2011-2022 走看看