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

    DECF 数据寄存器的内容递减1

    语法形式:DECF f,d

    操作数:f为数据寄存器的低7位地址(0x00~0x7F)

    d为目的寄存器的低7位地址(0x00~0x7F)

    当d=f时,结果放在f数据寄存器,f数据寄存器自减1

    当d=W时,结果放在W寄存器中,W寄存器内容自减1

    执行时间:一个指令周期

    执行过程:【f】-1→d

    状态标志影响:Z

    说明:该指令对数据寄存器的内容做减1运算。如果减1后的结果为0,则置位0标志寄存器Z

    指令范例:

    CLRF  Count ;Count=0x00

    DECF Count,f ;Count=0x00,f=0xFF

    DECF f,W ;f=0xFF,W=0xFE

    INCF 数据寄存器的内容递增1

    语法形式:INCF f,d

    操作数:f为数据寄存器的低7位地址(0x00~0x7F)

    d为目的寄存器的低7位地址(0x00~0x7F)

    当d=f时,结果放在f数据寄存器,f数据寄存器自增1

    当d=W时,结果放在W寄存器中,W寄存器内容自增1

    执行时间:一个指令周期

    执行过程:【f】+1→d

    状态标志影响:Z

    说明:该指令对数据寄存器的内容增加1。如果增加后的结果为0,则置位0标志寄存器Z

    指令范例:

    CLRF  Count ;Count=0x00

    INCF Count,f ;Count=0x00,f=0x01

    INCF f,W ;f=0x01,W=0x02

    IORWF 数据寄存器f和W寄存器做逻辑或操作

    语法形式:IORWF f,d

    操作数:f为数据寄存器的低7位地址(0x00~0x7F)

    d为目的寄存器的低7位地址(0x00~0x7F)

    当d=f时,结果放在f数据寄存器,W寄存器的内容不变

    当d=W时,结果放在W寄存器中,f数据寄存器的内容不变

    执行时间:一个指令周期

    执行过程:【f】|【W】→d

    状态标志影响:Z

    说明:数据寄存器内容和W寄存器的内容逻辑或,结果按照d的指定位置存放,按照逻辑或有1出1的规则,使用该命令可以将任意位设置为1

    指令范例:

    MOVLW  b’00001111’ ;将W寄存器的低4位设置为1

    IORWF PORTB,f ;将PORTB的低4位设置为1,不影响高4位

    ANDWF 数据寄存器f和W寄存器做逻辑与操作

    语法形式:ANDWF f,d

    操作数:f为数据寄存器的低7位地址(0x00~0x7F)

    d为目的寄存器的低7位地址(0x00~0x7F)

    当d=f时,结果放在f数据寄存器,W寄存器的内容不变

    当d=W时,结果放在W寄存器中,f数据寄存器的内容不变

    执行时间:一个指令周期

    执行过程:【f】&【W】→d

    状态标志影响:Z

    说明:数据寄存器内容和W寄存器的内容逻辑与,结果按照d的指定位置存放。按照逻辑与有0出0的规则,使用该命令可以将任意位设置为0。利用其影响标志Z的特性,可以判断寄存器任意位的组合是否为全0。

    指令范例:

    例1:寄存器任意位清零

    MOVLW b’00001111’ ;W寄存器高4位清0(取决于0的组合)

    ANDWF PORTB,f ;PORTB的高4位清0,低4位保持不变

    例2:判断寄存器任意位组合是否全0

    MOVLW b’00001111’ ;W寄存器的低4位置1(取决于1的组合)

    ANDWF PORTC,W ;只要PORTC的低4位全0,则Z标志寄存器就置1

    ;此指令的操作结果放在W寄存器中,不会影响原寄存器的值

    XORWF 数据寄存器内容和W寄存器内容做逻辑异或操作

    语法形式:XORWF f,d

    操作数:f为数据寄存器的低7位地址(0x00~0x7F)

    d为目的寄存器的低7位地址(0x00~0x7F)

    当d=f时,结果放在f数据寄存器,W寄存器的内容不变

    当d=W时,结果放在W寄存器中,f数据寄存器的内容不变

    执行时间:一个指令周期

    执行过程:【f】^【W】→d

    状态标志影响:Z

    说明:数据寄存器内容和W寄存器的内容逻辑异或,结果按照d的指定位置存放。按照逻辑异或的规则,任何数(0或1)和1异或,结果为反码;任何数和其本身异或,结果为0。所以此指令可以把寄存器的任意位数据反转(0变1,1变0),或者判断寄存器的内容是否为一特定值。

    指令范例:

    例1:寄存器任意位数据反转

    MOVLW b’00000011’ ;W寄存器低2位置1

    XORWF PORTB,f ;PORTB的高6位不变,低2位数据反转

    例2:判断寄存器的内容是不是特定值

    MOVLW 0xAA ;W=0xAA(可以是任意值)

    XORWF PORTC,W ;如果PORTC=0xAA,则Z标志就为1

    ;此指令的操作结果放在W寄存器中,不会影响原寄存器的值

  • 相关阅读:
    ActiveX控件的注册和反注册
    谷歌浏览器调用activex控件方法
    VC 中的ATL ActiveX 和 MFC ActiveX 有什么区别
    DirectX介绍(转)
    最简单的基于FFMPEG的图像编码器(YUV编码为JPEG)(转)
    统计Visual Studio项目的代码行数
    【Sqlite3】sqlite_sequence表(转)
    linuxunix系统下的字符操作
    tif
    字符串截取
  • 原文地址:https://www.cnblogs.com/wangluojisuan/p/3016137.html
Copyright © 2011-2022 走看看