您的位置 首页 被动

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

ADDWFW寄存器内容和f数据寄存器内容相加语法形式:ADDWFf,d操作数:f为数据寄存器的低7位地址(0x00~0x7F)d为目的寄存器的低7位地址…

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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/266000.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部