单片机
返回首页

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

2016-05-20 来源:eefocus

GOTO 程序无条件跳转到指定的地址

语法形式:GOTO m

操作数:m为11位立即数指定的目标地址

执行时间:2个指令周期

执行过程:

m→PC【10:0】

PCLATH【4:3】→PC【12:11】

状态标志影响:无

说明:程序无条件立即强行跳转到目的地址处继续执行。目的地址由本指令内含的11位地址码和特殊寄存器PCLATH中的【4:3】一起构成完整的13位地址。

指令范例:

ORG 0x000 ;伪指令指定程序的起始地址

GOTO Main ;程序跳转到标号指定的位置处继续执行

MOVLW W寄存器赋立即数

语法形式:MOVLW k

操作数:k为8位立即数

执行时间:一个指令周期

执行过程:k→W

状态标志影响:无

说明:该指令对W寄存器赋一个初值。任何其他数据寄存器如果要赋一个立即数值,必须通过W寄存器传送。

指令范例:

MOVLW 0x55 ;【W】=0x55

MOVWF Tmp ;【Tmp】=【W】=0x55

ADDLW W寄存器和8位立即数相加

语法形式:ADDLW k

操作数:k为8位立即数

执行时间:一个指令周期

执行过程:【W】+k→W

状态标志影响:Z DC C

说明:W寄存器的值和8位立即数相加,结果放入W寄存器内

指令范例:

MOVLW 0xAA ;W=0xAA

ADDLW 0x11 ;W=0xAA+0x11=0xBB

SUBLW 立即数减去W寄存器

语法形式:SUBLW k

操作数:k为8位立即数

执行时间:一个指令周期

执行过程:k-【W】→W

状态标志影响:Z DC C

说明:必须注意W寄存器在这条指令中是减数

如果k=W,相减结果为0,则Z=1

如果k>W,没有借位发生,则C=1

如果k

在PIC单片机内部这条减法指令的执行是先对W寄存器求补码,然后和被减数k相加,所以在判断是否有借位标志时要千万小心

指令范例:

MOVLW 0x23 ;W=0x23

SUBLW 0x32 ;W=0x32-0x23=0x0f,k>W所以C=1

IORLW W寄存器和立即数做逻辑或操作

语法形式:IORLW k

操作数:k为8位立即数

执行时间:一个指令周期

执行过程:【W】|k→W

状态标志影响:Z

说明:W寄存器和8位立即数相或,结果放入W寄存器内。按照逻辑或有1出1的法则,此指令可以把W寄存器的任意位设置成数据1

指令范例:

IORLW b‘00001111’ ;W寄存器低4位置1

ANDLW W寄存器和立即数做逻辑与操作

语法形式:ANDLW k

操作数:k为8位立即数

执行时间:一个指令周期

执行过程:【W】&k→W

状态标志影响:Z

说明:W寄存器和8位立即数相与,结果放入W寄存器内。按照逻辑与有0出0的法则,可以把W寄存器的任意位置清0

指令范例:

ANDLW b‘00001111’ ;W寄存器高4位清0

XORLW W寄存器和立即数做逻辑异或操作

语法形式:XORLW k

操作数:k为8位立即数

执行时间:一个指令周期

执行过程:【W】^k→W

状态标志影响:Z

说明:W寄存器和8位立即数异或,结果放入W寄存器内。按照逻辑异或的法则,任何数和1异或,结果为其反码;任何数和其自身异或,结果为0。所以该指令可以把W寄存器的任意位数反转,或者判断W寄存器的内容是否为特定值

指令范例:

例1:任意数据按位取反

XORLW b‘11111111’ ;取W寄存器8位反码

例2:判断W寄存器内容是否为特定值

XORLW 0x34 ;判断W=0x34?

BTFSC STATUS,Z ;W不等于0x34,则跳过下条指令

GOTO W34 ;W等于0x34,转去执行相关操作

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • PIC单片机控制的遥控防盗报警器电路

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 如何构建一个触摸传感器电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章