INCFSZ f数据寄存器内容递增1,并作判0标志
语法形式:INCFSZ f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为目的寄存器的低7位地址(0x00~0x7F)
当d=f时,结果放在f数据寄存器,W寄存器的内容不变
当d=W时,结果放在W寄存器中,f数据寄存器的内容不变
执行时间:一个指令周期或两个指令周期
执行过程:【f】+1→d
状态标志影响:Z
说明:该指令首先对数据寄存器的内容做加1操作,结果按照d的指示保存到相应的地方,然后对Z进行判0操作(分支跳转控制):如果加1之后的结果非0,也就是Z=0,程序将会按照顺序执行下一条指令,使用1个指令周期;如果加1之后结果为0,也就是Z=1,那么程序将会跳过INCFSZ指令之后的第一条指令,开始执行第二条指令,使用2个指令周期。该指令常用于计数次数和循环次数的控制。
指令范例:
   MOVLW 0xC0 ;循环计数数据赋初值
   MOVWF Count ;此时循环计数器初值Count=0xC0
Loop:INCFSZ Count,f ;Count内容加1,放回Count中,并进行Z标志判断
   GOTO Loop ;如果加1之后的结果不为0,则循环执行Loop的内 容,总共循环次数为0x00-0xC0=0x40次
   NOP ;结果为0,则跳到这条指令
RRF 数据寄存器内容带进位的循环右移
语法形式:RRF f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为目的寄存器的低7位地址(0x00~0x7F)
当d=f时,结果放在f数据寄存器,W寄存器的内容不变
当d=W时,结果放在W寄存器中,f数据寄存器的内容不变
执行时间:一个指令周期
执行过程:
状态标志影响:C
说明:该指令把C进位寄存器(借位寄存器)和数据寄存器的8位数据结合在一起做9位的循环右移1位的操作。操作的结果是把C移到数据寄存器的最高位,原数据寄存器的最低位放到C中。
指令范例:
例1:实现数据寄存器自身8位的循环右移
RRF Data,W ;数据寄存器Data的内容右移1位,结果放入W寄存器,Data本身 的内容不变,但是最低位已经移到C中
RRF Data,f ;再次进行右移,结果写入Data自身。这时上一条指令移入C中的最低位现在已经变成Data的最高位,实现了最低位变最高位,最高位变成第二高位的目的
例2:实现数据寄存器算数右移(除2操作)
BCF STATUS,C ;确保C=0
RRF Data,f ;数据寄存器右移1位,最高位现在为0,结果放入自身
RLF 数据寄存器内容进行带进位的循环左移操作
语法形式:RLF f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为目的寄存器的低7位地址(0x00~0x7F)
当d=f时,结果放在f数据寄存器,W寄存器的内容不变
当d=W时,结果放在W寄存器中,f数据寄存器的内容不变
执行时间:一个指令周期
执行过程:
状态标志影响:C
说明:该指令将C和8位数据寄存器的数据结合起来进行9位的循环左移操作,结果放入d指定的位置。操作结果是把C移到数据寄存器的最低位,将原数据寄存器的最高位移入C中。
指令范例:
例1:实现数据寄存器的8位内容循环左移
RLF Data,W ;Data的内容左移1位放入W寄存器中,Data的内容不变,Data的 最高位放入C中
RLF Data,f ;Data的内容经操作后放回自身,C的内容(经上步操作后变成了原Data的最高位)放入Data的最低位。
例2:实现数据寄存器的算数左移(结果乘以2)
BCF STATUS,C ;确保C=0
RLF Data,f ;数据寄存器Data左移1位,最低位补充为0,实现乘以2
SWAPF 数据寄存器高低半字节内容进行交换
语法形式:SWAPF f,d
操作数:f为数据寄存器的低7位地址(0x00~0x7F)
d为目的寄存器的低7位地址(0x00~0x7F)
当d=f时,结果放在f数据寄存器,W寄存器的内容不变
当d=W时,结果放在W寄存器中,f数据寄存器的内容不变
执行时间:一个指令周期
执行过程:【f<3:0>】←→【f<7:4>】
状态标志影响:无
说明:该指令实现把数据寄存器的高低半字节的内容进行交换,结果放入d指定的地址。该指令在中断服务程序退出前恢复W寄存器的内容的过程中起着不可或缺的作用。不影响状态寄存器。
指令范例:
SWAPF w_temp,f ;w_temp的高低半字节内容交换,结果放回w_temp本身
SWAPF w_temp,W ;w_temp的高低半字节内容再次交换,但是结果放入W寄存器中,在不影响状态寄存器的前提下,实现了把w_temp的原内容复制到W寄存器中。

转载于:https://blog.51cto.com/387929/1179701

PIC中档单片机汇编指令详解(4)相关推荐

  1. PIC中档单片机汇编指令详解(6)

    2019独角兽企业重金招聘Python工程师标准>>> 立即数与控制操作指令 SLEEP 单片机进入低功耗休眠模式 语法形式:SLEEP 操作数:无 执行时间:一个指令周期 执行过程 ...

  2. c语言将两个16位变为一个32位,16位汇编第六讲汇编指令详解第第三讲(示例代码)...

    16位汇编第六讲汇编指令详解第第三讲 1.十进制调整指令 1. 十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果 2.分成压缩BCD码和非压缩BCD码调整 简而言之: 以前的时 ...

  3. 80x86汇编指令详解

    80x86指令系统,指令按功能可分为以下七个部分. (1) 数据传送指令. (2) 算术运算指令. (3) 逻辑运算指令. (4) 串操作指令. (5) 控制转移指令. (6) 处理器控制指令. (7 ...

  4. RDTSC汇编指令详解

    RDTSC - 读取时间标签计数器 操作码 指令 说明 0F 31 RDTSC 将时间标签计数器读入 EDX:EAX 说明 将处理器的时间标签计数器的当前值加载到 EDX:EAX 寄存器.时间标签计数 ...

  5. RV32I ISA 汇编指令详解

    add rd, rs1, rs2 示例: add x5,x6,x7 x5=x6+x7 rd: 0b00101 rs1:0b00110 rs2:0b00111 对应32位指令格式如下: 0000000 ...

  6. arm-linux-ld中的参数,arm-linux-ld指令详解

    arm-linux-ld指令详解 我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的,我们首先要考虑的如何组合起来:其次,这些.o文件存在相互调用的关系 ...

  7. 51单片机步进电机角度控制详解(免费提供代码+仿真)

    51单片机步进电机控制详解 目录 51单片机步进电机控制详解 一.步进电机基本介绍 1. 步进电机结构 2. 步进电机驱动 二.硬件&仿真设计 0.设计要求 1. 硬件设计 显示模块 输入模块 ...

  8. 单片机执行指令过程详解

    单片机执行指令过程详解: 单片机执行程序的过程,实际上就是执行我们所编制程序的过程,即逐条指令的过程. 计算机每执行一条指令都可分为三个阶段进行.即取指令-----分析指令-----执行指令. (1) ...

  9. 寄存器(1)寄存器概念,x86寄存器种类说明及汇编代码详解

    寄存器(1)寄存器概念,x86寄存器种类说明及汇编代码详解 1. 什么是寄存器 1.1 概念 1. 什么是寄存器: 2. 寄存器作用: 1.2 通俗易懂理解寄存器 2. x86寄存器种类说明及汇编代码 ...

最新文章

  1. html页面循环报错,wxs 脚本中 for 循环的一种写法导致 page-frame.html 报错
  2. SVN 客户端的安装与配置
  3. php过滤除了文字数据英文,正则:过滤除英文和汉字的其它特殊符号
  4. 最新微软Windows Server 2008之一 系统安装
  5. 易编远航第七套大漠多线程多开入门高级篇
  6. 怎么在gif表情包上添加文字?
  7. Matlab中写M文件及调用
  8. wpsa4排版_WPS表格 排版 成a4纸 能打印格式 ! 大神们求教
  9. 国科大高级软件工程20年期末考题
  10. C语言去掉字符串首尾空格,C语言实现去除字符串首尾空格
  11. 【深度优先搜索】leetcode 1905. 统计子岛屿
  12. CSS中定位属性的常见属性值
  13. Java 基础——HashMap 遍历方式
  14. 高考数学辅导高考数学题型全归纳
  15. 将python脚本打包为exe可执行文件
  16. android平台下OpenGL ES 3.0实例详解顶点属性、顶点数组
  17. 奇迹mu登录器工具和网站文件配置
  18. Linux字符界面与图形界面的切换
  19. Zebec获BNB Chain生态大力支持,ZBC通证将陆续登录一线平台
  20. 关于 PowerShell 无法执行脚本(因为在此系统上禁止运行脚本)解决方法?

热门文章

  1. Python logging模块实现同时向控制台和文件打印日志
  2. 系统理解Win32 API和MFC
  3. oracle ocm 考题,2012年10 月oracle 10g ocm 认证 考试 真题 题库
  4. FTP 编写 3:同时为多个客户端服务(多线程)
  5. fastdfs原理_搭建分布式文件系统FastDFS集群
  6. python中的sys模块和os_python中os和sys模块的区别与常用方法总结
  7. 芜湖市计算机应用能力考试,安徽省芜湖市2021年3月计算机等级考试时间
  8. excel range 判断日期型_EXCEL常用函数二
  9. Spring Boot整合Swagger3的分组问题
  10. 自己本地搭建svn仓库_「PHP编程」如何制作自己的Composer包?