当前位置:首页 > 单片机 > 单片机
[导读]Pic 8位单片机汇编指令识读各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系

Pic 8位单片机汇编指令识读

各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。

PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。

在这里笔者介绍PIC 8位单片机汇编语言指令的组成及指令中符号的功能,以供初学者阅读相关书籍和资料时快速入门。

一、PIC汇编语言指令格式

PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:

标号 操作码助记符 操作数1,操作数2;注释

指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。

1 标号 与MCS-51系列单片机功能相同,标号代表指令的符号地址。在程序汇编时,已赋以指令存储器地址的具体数值。汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。

书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。再有标号不能用操作码助记符和寄存器的代号表示。标号也可以单独占一行。

2 操作码助记符 该字段是指令的必选项。该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。

3 操作数 由操作数的数据值或以符号表示的数据或地址值组成。若操作数有两个,则两个操作数之间用逗号(,)分开。当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。还可以是被定义过的标号、字符串和ASCⅡ码等。具体表示时,规定在二进制数前冠以字母“B”,例如B10011100;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。在这里PIC 8位单片机默认进制是十六进制,在十六进制数之前加上Ox,如H2F可以写成Ox2F。

指令的操作数项也是可选项。

PIC系列与MCS-51系列8位单片机一样,存在寻址方法,即操作数的来源或去向问题。因PIC系列微控制器采用了精简指令集(RISC)结构体系,其寻址方式和指令都既少而又简单。其寻址方式根据操作数来源的不同,可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。所以PIC系列单片机指令中的操作数常常出现有关寄存器符号。有关的寻址实例,均可在本文的后面找到。

4 注释 用来对程序作些说明,便于人们阅读程序。注释开始之前用分号(;)与其它部分相隔。当汇编程序检测到分号时,其后面的字符不再处理。值得注意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。

二、清零指令(共4条)

1 寄存器清零指令

实例:CLRW;寄存器W被清零

说明:该条指令很简单,其中W为PIC单片机的工作寄存器,相当于MCS-51系列单片机中的累加器A,CLR是英语Clear的缩写字母。

2 看门狗定时器清零指令。

实例:CLRWDT;看门狗定时器清零(若已赋值,同时清预分频器)

说明:WDT是英语Watchdog Timer的缩写字母。CLR见上述说明。注意该两条指令无操作数。

3 寄存器f清零指令。指令格式:CLRF f

实例:CLRF TMRO;对TMRO清零

说明:在PIC系列8位单片机中,常用符号F(或f)代表片内的各种寄程器和F的序号地址。F取值按PIC系列不同型号而不同,一般为Ox00~Ox1F/7F/FF。TMRO代表定时器/计数器TMRO,所以CLRF对寄程器清零,采用了直接寻址方式直接给出要访问的寄存器TMRO。

4 位清零指令。指令格式 BCF f,b

实例:BCF REG1,2;把寄存器REG1的D2位清零

说明:BCF是英语Bit Clear F的缩写。指令格式中的F,同上说明;符号b是表示PIC片内某个8位数据寄存器F的位号(或位地址),所以b的取值为0~7或D0~D7。实例中REG是Register的缩写。实例中的2代表指令格式中的b=2即寄存器REG1的D2位。

通过上述四条清零指令格式和实例,可以说明,学习PIC系列8位单片机的指令时应首先了解指令的助记符意义(功能),再有就是它的表达方式。初学者没有必要死记指令,重要是理解和实践。

本文关于指令的注释将与前述指令中的略有不同。前述指令注释时是对指令具体完成的功能给以说明,这种注释方法对初学者确实易于接受和理解,但是实际应用中的PIC产品汇编语言的注释通常是以程序要做什么(或指令的作用)而不是说指令的直接功能。鉴于上述原因,下述的指令注释将改变过去的注释方法,用程序应起的作用作注释。

10 寄程器半字节交换指令

指令格式:SWAPF f,d

说明:SWAPF是Swap f的合写。符号f、d的意义与前述的相同。该条指令的功能是寄存器f的高4位与低4位交换,即指令执行前,若寄存器f的8位状态为D7、D6、D5、D4、D3、D2、D1、D0,执行后的8位状态变为D3、D2、D1、D0、D7、D6、D5、D4,其结果存入W(d=0)或f(d=1)中。

实例:中断现场保护是中断技术中重要部分。由于PIC16C××指令系统中没有进栈PUSH和出栈POP指令,所以只能用其它指令来实现。因为在主程序中常常用到工作寄存器W和状态寄存器STATUS,所以中断现场保护常要保护寄存器W和STATUS。

下面是对PIC16C7×系列芯片中断现场保护的实例程序。

MOVWF W_TEMP   ;将W内容存入到临时寄存器

W_TEMP中

SWAPF STATUS,W  ;交换STATUS与W内容

MOVWF STATUS_TEMP ;将STATUS的内容存入到临

…           时寄存器STATUS_TEMP中

中断服务程序

SWAPF STATUS_TEMP,W;交换STATUS_TEMP与W

的内容

MOVWF STATUS    籗TATUS复原成原来的状态

SWAPF W_TEMP,F   ;交换内容

SWAPF W_TEMP,W  ;W复原成原来的状态

说明:上述程序中各条指令的注释基本上都是以程序应达到的目的而注释的,对每条指令的功能几乎未涉及。这是初学者应特别注意的。

11 子程序调用指令(Subroutine Call)

指令格式:CALL k;k为立即地址

说明:子程序调用,不同型号芯片的实现方法不尽相同,其共同点是首先将返回地址((PC)+1)压栈保护,再转入所调用的子程序入口地址执行(与MCS-51指令功能相似)。

指令格式模式:HERE CALL DELAY;调用延时子程序

DELAY MOVLW 0x80 ;延时子程序

RETLW 0

说明:调用指令执行前,PC=地址HERE

调用指令执行后,PC=地址DELAY(标号),堆栈指针TOS=HERE+1(返回地址)。

实例:见下条指令的实例

12 寄存器内容取反指令

指令格式:COMF f,d

说明:COMF是Complement f的缩写。其中d=1时,操作(f)→f;d=0时,操作(f)→w。

功能:寄存器f内容取反后送入W(d=0)或f自身(d=1)。

实例:  ORG   0x1FF

GOTO MAIN

ORG   0

DELAY …

MAIN MOVLW 0 ;主程序开始

TRTS 5 ;设置RA口为输出

BCF 5,0  ;置RA口0位为0

LOOP   CALL DELAY;闪动延时

COMF 5 ;RA口求反(亮—灭—

亮……控制)

GOTO LOOP ;循环

说明:上述指令是一种PIC16C54 LED发光控制实验部分程序。其中延时子程序DELY未列出,但不影响本条指令的识读。程序中的主程序开始的三条指令,均已介绍过,紧跟着的CALL指令是调用执行子程序,其入口地址为标号DELAY。子程序执行结束后,又执行COMF 5的LED发光亮—灭…亮—灭……控制指令。后面一条GOTO LOOP指令是达到LED循环点亮目的。

13 面向位的操作指令(共4条,PIC高级产品多增一条)

该类指令除一条位清零外,另有一条寄存器f位b的置1指令和另外两条位跳步指令(PIC高级产品多增一条f的b位触发转换指令)。

(1)位置1指令。指令格式 BSF f,b

说明:BSF是Bit Set f的缩写。F和b的意义与前述相同,该条指令的功能是将寄存器f的b位置1。

(2)位测试、为零间跳指令。指令格式 BTFSC f,b

说明:BTFSC是Bit Test,Skip if Clear的缩写。指令功能是测试寄存器f位“b”,如为0,跳过下一条指令;为1顺序执行,即当f(b)=0时,就不执行当前指令而执行下一条指令(间跳),即用一条空指令NOP代替它,所以该条指令占用2个指令周期。

(3)位测试、为1间跳指令。指令格式 BTFSS f,b

说明:BTFSS是Bit Test,Skip if Set的缩写。其指令的逻辑功能与上条相反,位测试f(b)=1就间跳执行,f(b)=0顺序执行。

上面介绍的PIC 8位单片机汇编语言指令仅是部分指令,此外还有循环左、右移指令;W和寄存器f相“加”、相“与”指令和进入睡眠方式等指令。鉴于报纸版面的限制,不在这里一一介绍,

在前面的一系列文章中,我们详细学习了单片机中最基本的MCS-51系列。从本文开始,我们进入PIC单片机的学习部分,在接下来的文章中,ANY电子将带你详细学习PIC单片机的汇编语言以及PIC C语言,带你进入一个新的单片机世界。

首先,我们先来了解一下PIC单片机的指令系统,为了方便记忆,我们就从PIC单片机指令系统的来源开始这一系列的文章。需要注意的是,此处指令系统的来源由相关资料和书籍整理,仅供参考,以帮助理解记忆,尽快掌握PIC单片机的指令系统。

在前面的一系列文章中,我们详细学习了单片机中最基本的MCS-51系列。从本文开始,我们进入PIC单片机的学习部分,在接下来的文章中,ANY电子将带你详细学习PIC单片机的汇编语言以及PIC C语言,带你进入一个新的单片机世界。
首先,我们先来了解一下PIC单片机的指令系统,为了方便记忆,我们就从PIC单片机指令系统的来源开始这一系列的文章。需要注意的是,此处指令系统的来源由相关资料和书籍整理,仅供参考,以帮助理解记忆,尽快掌握PIC单片机的指令系统。
指令                                 指令缩写来源
ADDWF        f,d                 ADD W and F
ANDWF        f,d                 AND W with F
CLRF             f                  CLeaR F
CLRW            -                  CLeaR W
COMF           f,d                COMplement F
DECF            f,d                DECrement F
DECFSZ        f,d                DECrement F,Skip if 0(Zero)
INCF             f,d                INCrement F
INCFSZ         f,d                INCrement F,Skip if 0(Zero)
IORWF          f,d                Inclusive OR W with F
MOVF           f,d                 MOVe F
MOVWF        f                   MOV W to F
NOP              -                   NO Operation
RLF               f,d                Rotate Left F through carry
RRF               f,d                Rotate Right F through carry
SUBWF         f,d                 SUBtract W from F
SWAPF          f,d                SWAP nibbles in F
XORWF         f,d                eXclusive OR W with F
BCF               f,b                Bit Clear F
BSF               f,b                 Bit Set F
BTFSC           f,b                Bit Test F,Skip if Clear
BTFSS           f,b                Bit Test F,Skip if Set
ADDLW         k                  ADD Literal and W
ANDLW         k                  AND Literal with W
CALL            k                   CALL subroutine
CLRWDT       -                   CLeaR WatchDog Timer
GOTO            k                  GO TO address
IORLW          k                   Inclusive OR Literal with W
MOVLW        k                   MOVe Literal to W
RETFIE         -                    RETurn From IntErrupt
RETLW          k                  RETurn with Literal in W
RETURN       -                    RETURN from subroutine
SLEEP           -                   go into SLEEP mode
SUBLW         k                   SUBtract Literal from W
XORLW         k                  eXclusive OR Literal with W
其中,有朋友说,上面指令系统中的
RETFIE         -                    RETurn From IntErrupt
应理解为RETurn From Interrupt with interrupt Enable

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

伦敦2024年4月16日 /美通社/ -- ATFX宣布任命Siju Daniel为首席商务官。Siju在金融服务行业拥有丰富的经验和专业知识,曾在全球各地的高管职位上工作了19年以上。Siju之前担任FXCM首席商务官...

关键字: NI AN SI BSP

常州2023年9月25日 /美通社/ -- 9月23日,由江苏省商务厅指导,世界中餐业联合会、常州市人民政府主办的"第三届中华节气菜大会暨首届江南美食节"在江苏常州开幕。文化和旅游部国际交流与合作局一...

关键字: BSP 可持续发展 大赛 质量控制

北京2023年9月25日 /美通社/ -- 9月21日,由中国质量报刊社·中国质量新闻网主办的第六届食品高质量发展交流会在北京举行,会议主题为"高质量,新生活",旨在推动食品行...

关键字: 自动化 BSP ISO9001 NAS

北京2023年9月23日 /美通社/ -- 近日,主线科技正式获准在北京市智能网联汽车政策先行区道路开启常态化测试与示范,将与物流客户在真实开放的城区道路场景中,率先开启基于L4级别自动驾驶能力的智能卡车运输示范。 随...

关键字: 智能卡 测试 高速公路 BSP

曼谷2023年9月18日 /美通社/ -- 作为东南亚的旅游胜地,泰国一直在全球范围内吸引着无数游客的目光。泰国旅游和体育部近日公布的报告显示,今年前7个月,泰国旅游业总收入约为1.08万亿泰铢(约合人民币2233亿元)...

关键字: BSP GEN 国美 AN

哥伦比卡尔达斯2023年9月22日 /美通社/ -- 近日,天合跟踪与中国电建签订拉美地区哥伦比亚泰普伊光伏电站跟踪支架供货协议,将为其提供108MW智能跟踪系统,其中包含开拓者1P智能跟踪支架、智能算法、以及智慧云平台...

关键字: 光伏电站 跟踪系统 控制器 BSP

2型炎症领域新突破 上海2023年9月22日 /美通社/ -- 赛诺菲今天宣布,达必妥®(度普利尤单抗注射液)获得中国国家药品监督管理局(NMPA)批准,用于治疗适合系统治疗的中度至重度结节性痒疹的成...

关键字: PRIME BSP REPORT SAR

欧莱雅中国旗下上海美次方投资有限公司达成首次开放式创新投资 法国克里希2023年9月22日 /美通社/ -- 欧莱雅集团宣布对中国创新型生物科技公司杉海创新进行少数股权投资,以建立长期合作伙伴关系,共同开发新...

关键字: AN BSP DEVELOPMENT FOR

赋能企业实现业务数据的可识别、可见、可协作和安全数据的可操作 北京2023年9月22日 /美通社/ -- 亚马逊云科技持续加速分析与安全服务创新,守护安全基座,助力企业进一步释放数据要素价值,实现创新增长。在数字经济时...

关键字: 亚马逊 BSP 生成式AI SECURITY

重庆2023年9月22日 /美通社/ -- 全球领先的高端半导体封装载板和印制电路板制造商奥特斯连续第八年受邀,出席重庆市市长国际经济顾问团于9月22日举行的第十七届年会。 奥特斯连续第八年受邀,出席重庆市市...

关键字: BSP 印制电路板 微型 微电子
关闭
关闭