电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

单片机的指令体系

2017-03-29 16:32分类:PLC基础知识 阅读:

 

一、数据传送指令

数据传送指令首要担任把数据、地址或当即数传送到寄存器或存储单元中。这类指令共有29条,可分为以下3大类:底子数据传送指令,数据沟通指令,栈操作指令。

施行数据传送指令时,除以累加器A为意图操作数的指令会对奇偶象征位P有影响外,别的指令施行时均不会影响任何象征位。

1.底子数据传送指令

依据数据取自何方和传到何方,MOV指令有着很多纷歧样的办法。

(1)以累加器A为意图操作数类指令

这组指令的作用是把源操作数指向的内容送到累加器A。有当即数、直接、寄存器和寄存器直接寻址办法:

MOVA,#data ;data→(A)

MOVA,direct ;(direct)→(A)

MOVA,Ri ;(Ri)→(A)

MOVA,@Rj ;((Rj))→(A)

(2)以寄存器Ri为意图操作数的指令

这组指令的功用是把源操作数指定的内容送到所选定的作业寄存器Ri中。有当即、直接和寄存器寻址办法:

(3)以直接地址为意图操作数的指令

这组指令的功用是把源操作数指定的内容送到由直接地址direct所选定的片内RAM中。有当即、直接、寄存器和寄存器直接4种寻址办法:

(4)以直接地址为意图操作数的指令

这组指令的功用是把源操作数指定的内容送到以Rj中的内容为地址的片内RAM中。有当即、直接和寄存器3种寻址办法

(5)查表指令

这组指令的功用是对寄存于程序存储器中的数据表格进行查找传送,运用变址寻址办法:

MOVCA,@A+DPTR ;((A)+(DPTR))→(A)

MOVCA,@A+PC ;((PC))+1→(PC),((A)+(PC))→(A)

(6)累加器A与片外数据存储器RAM传送指令

这组指令的作用是累加器A与片外RAM间的数据传送。运用寄存器寻址办法:

MOVX@DPTR,A ;(A)→((DPTR))

MOVXA,@DPTR ;((DPTR))→(A)

MOVXA,@Rj ;((Rj))→(A)

MOVX@Rj,A ;(A)→((Rj))

(7)16位数据传送指令

这条指令的功用是把16位常数送入数据指针寄存器。

MOVDPTR,#data16 ;dataH→(DPH),dataL→(DPL)

2.沟通指令

MOV指令首要完毕从一处到另一处的复制,XCH指令则可完毕数据的双向传送。悉数的操作都触及到累加器A,能够把把累加器A中的内容与源操作数所指的数据彼此沟通。

XCHA,direct ;(A)←→(direct)

XCHA,Ri ;(A)←→(Ri)

XCHA,@Rj ;(A)←→((Rj))

XCHDA,@Rj ;(A3-0)←→((Rj)3-0)

SWAPA ;(A3-0)←→(A7-4)

3.入栈/出栈指令

这类指令的作用是把直接寻址单元的内容传送到仓库指针SP所指的单元中,以及把SP所指单元的内容送到直接寻址单元中。

⑴PUSH指令

仓库的入栈指令,该指令能够把某片内RAM单元(低128字节)或某专用寄存器的内容入栈。

PUSHdirect ;(SP)+1→(SP),(direct)→(SP)

⑵POP指令

仓库的出栈指令,该指令用于康复某片内RAM单元(低128字节)或某专用寄存器的内容。

POPdirect ;(SP)→(direct),(SP)-1→(SP)

二、算术运算指令

在51系列单片机的指令体系中,供应了齐备的加、减、乘、除算术运算指令及增量(加1)、减量(减1)运算,可处理不带符号或带符号的8/16二进制数。除加1和减1指令外,算术运算指令会影响进位、半进位和溢出位三个象征位。

1.不带进位的加法指令

这组指令的作用是把当即数,直接地址、作业寄存器及直接地址内容与累加器A的内容相加,运算作用存在A中。

ADDA,#data ;(A)+data→(A)

ADDA,direct ;(A)+(direct)→(A)

ADDA,Ri ;(A)+(Ri)→(A)

ADDA,@Rj ;(A)+((Rj))→(A)

本组指令的施即将影响象征位AC、CY、OV、P。当和的第3、7位有进位时,别离将AC,CY象征方位位;不然复位。关于无符号数,进位象征位CY=1,标明溢出;CY=0标明无溢出。带符号数运算的溢出取决于第6、7位,若这2位中有一位发作进位,而另一位不发作进位,则溢出象征位OV置位,不然被复位。

2.带进位加法指令

这组指令的作用是把当即数,直接地址、作业寄存器及直接地址内容与累加器A的内容以及进位位C相加,运算作用存在A中。

本组指令施行方针征位AC、CY、OV、P的影响与ADD指令一样。

3.增量指令

这组指令的的功用均为原寄存器的内容加1,作用送回原寄存器。这组指令共有直接、寄存器、寄存器直接寻址等寻址办法:

INCA ;(A)+1→(A)

INCdirect ;(direct)+1→(direct)

INCRi ;(Rn)+1→(Ri)

INC@Rj ;((Rj))+1→((Rj))

INCDPTR ;(DPTR)+1→(DPTR)

增量指令不会对任何象征有影响。

4.带借位减法指令

这组指令包含当即数、直接地址、直接地址及作业寄存器与累加器A连同借位位C内容相减,作用送回累加器A中。

SUBBA,#data ;(A)-data-(C)→(A)

SUBBA,direct ;(A)-(direct)-(C)→(A)

SUBBA,Ri ;(A)-(Ri)-(C)→(A)

SUBBA,@Rj ;(A)-((Rj))-(C)→(A)

本指令施即将影响象征位AC、CY、OV、P。若第七位有借位,则将CY置位,不然CY复位。若第3位有错位,则置位辅佐进位象征AC,不然AC复位。若第7和第6位中有一位需借位,而另一位不借位,则置位溢出象征OV。

当在进行单字节或多字节减法前,不知道进位象征位CY的值,则应在减法指令前先将CY复位清“0”。

5.减量指令

这组指令的作用是把所指的寄存器内容减1,作用送回原寄存器,这组指令共有直接、寄存器、寄存器直接寻址等寻址办法:

DECA ;(A)-1→(A)

DECdirect ;(direct)-1→(direct)

DECRi ;(Ri)-1→(Ri)

DEC@Rj ;((Rj))-1→((Rj))

运算作用不影响任何象征位。

6.乘法指令

这条指令的作用是把累加器A和寄存器B中的8位无符号数相乘,所得到的是16位乘积,这个作用低8位存在累加器A,而高8位存在寄存器B中。

MULAB ;(A)×(B)→(B)和(A)

乘法指令需求4个机器周期。

假定乘积大于255(0FFH),即B的内容不为0时,则置位溢出象征位OV,不然OV复位。进位象征位CY老是复位为0。

7.除法指令

这条指令的作用是把累加器A的8位无符号整数除以寄存器B中的8位无符号整数,所得到的商存在累加器A,而余数存在寄存器B中。

DIVAB;(A)÷(B)→(A)和(B)

除法指令需求4个机器周期。

本指令老是将CY和OV象征位复位。当除数(B中内容)为00H时,那么施行作用将为不定值,则置位溢出象征位OV。

8.十进制调整指令

在进行BCD码运算时,这条指令老是跟在ADD或ADDC指令往后,其功用是将施行加法运算后存于累加器A中的作用进行调整和批改。

DAA

三、逻辑运算指令

在51系列单片机的指令体系中供应的逻辑运算指令首要包含ANL(与),ORL(或),XRL(异或)等指令。

1.逻辑与指令ANL

这组指令的功用是在指出的变量之间以位为根底的逻辑与操作。操作数有寄存器寻址、直接寻址、寄存器直接寻址和当即寻址等寻址办法:

ANLA,#data;(A)∧data→(A)

ANLA,direct ;(A)∧(direct)→(A)

ANLA,Ri ;(A)∧(Ri)→(A)

ANLA,@Rj ;(A)∧((Rj))→(A)

ANLdirect,#data ;(direct)∧data→(direct)

ANLdirect,A ;(direct)∧(A)→(A)

2.逻辑或指令ORL

这组指令的功用是在所指出的变量之间施行以位为根底的逻辑或操作,作用存到意图变量中去。操作数有当即寻址、直接寻址、寄存器寻址和寄存器直接寻址办法:

3.逻辑异或指令XRL

这组指令的功用是在所指出的变量之间施行以位为根底的逻辑异或操作,作用寄存到意图变量中去。操作数有当即寻址、直接寻址、寄存器寻址和寄存器直接寻址办法:

4.循环移位指令

这4条指令的作用是将累加器中的内容循环左或右移一位,后两条指令是连同进位位CY一同移位。

RLA ;累加器A中的内容左移一位。

RRA ;累加器A中的内容右移一位。

RLCA ;累加器A中的内容连同进位位CY左移一位。

RRCA ;累加器A中的内容连同进位位CY右移一位。

5.求反指令

这条指令将累加器中的内容按位取反。

CPLA ;累加器中的内容按位取反。

6.清零指令

这条指令将累加器中的内容清0。

CLRA ;0→(A),累加器中的内容清0。

四、位操作类指令

MCS-51单片机内部有一个布尔处理机,对位地址空间具有丰盛的位操作指令。

1.位传送指令

这2条指令的功用是把由源操作数指出的布尔变量送到意图操作数指定的位中去。其间一个操作数有必要为进位象征,另一个可所以任何直接寻址位。

MOVC,bit ;bit→CY,某位数据送CY。

MOVbit,C ;CY→bit,CY数据送某位。

本组指令不影响别的寄存器和象征位。

2.位变量批改指令

这些指令对CY及可寻址位进行置位或复位操作

CLRC ;0→CY,复位CY。

CLRbit ;0→bit,复位某一位。

SETBC ;1→CY,置位CY。

SETBbit ;1→bit,置位某一位。

本组指令不影响别的象征。

3.位变量逻辑指令

位运算都是逻辑运算,有与、或、非三种指令

ANLC,bit ;(CY)∧(bit)→CY

ANLC,/bit;(CY)∧()→CY

ORLC,bit ;(CY)∨(bit)→CY

ORLC,/bit ;(CY)∧()→CY

CPLC ;()→CY

CPLbit ;()→bit

4.位变量条件搬运指令

位变量条件搬运指令是以位的状况作为完毕程序搬运的差异条件:

JCrel ;(CY)=1搬运,(PC)+2+rel→PC,不然程序往下施行,(PC)+2→PC。

JNCrel ;(CY)=0搬运,(PC)+2+rel→PC,不然程序往下施行,(PC)+2→PC。

JBbit,rel ;位状况为1搬运。

JNBbit,rel;位状况为0搬运。

JBCbit,rel ;位状况为1搬运,并使该位清“0”。

五、操控搬运指令

通常状况下指令是次第施行的逐条施行的,但实习上程序不或许悉数次第施行而常常需求改动程序的施行流程,常用的操控搬运指令有:

1.无条件搬运指令

这组指令施行完后,程序就会无条件搬运到指令所指向的地址上去。长搬运指令拜访的程序存储器空间为16地址64kB,必定搬运指令拜访的程序存储器空间为11位地址2kB空间。

LJMPaddr16 ;addr16→(PC)

AJMPaddr11 ;(PC)+2→(PC),addr11→(PC10-0)

SJMPrel ;(PC)+2+rel→(PC)

JMP@A+DPTR;(A)+(DPTR)→(PC)

2.条件搬运指令

条件搬运指令是依某种特定条件搬运的指令。条件满意时搬运(恰当于一条相对搬运指令),条件不满意时则次第施行下面的指令。意图地址鄙人一条指令的开端地址为基地的256个字节计划中(-128~+127)。当条件满意时,先把PC指向指向下一条指令的榜首个字节地址,再把有符号的相对偏移量加到PC上,核算出转向地址。

JZrel ;A=0,(PC)+2+rel→(PC)

JNZrel ;A≠0,(PC)+2+rel→(PC)

3.比照不持平搬运指令

这组指令的功用是比照前面两个操作数的巨细。假定它们的值不持平则搬运。在PC指向下一条指令的开端地址后,经过把指令毕竟一个字节的有符号的相对偏移量加到PC上,并核算出转向地址。操作数有寄存器寻址、直接寻址,寄存器直接寻址和当即寻址等办法。

CJNEA,direct,rel ;A≠(direct),(PC)+3+rel→(PC)

CJNEA,#data,rel ;A≠data,(PC)+3+rel→(PC)

CJNERi,#data,rel ;A≠data,(PC)+3+rel→(PC)

CJNE@Rj,#data,rel ;A≠data,(PC)+3+rel→(PC)

4.减1不为0搬运指令

这组指令把源操作数减1,作用回送到源操作数中去,假定作用不为0则搬运,跳到标号rel处施行,等于0就施行下一条指令。源操作数有寄存器寻址和直接寻址办法。该指令通常用于完毕循环计数。

DJNZRi,rel;(Ri)-1→(Ri),(Ri)≠0,(PC)+2+rel→(PC)

DJNZdirect,rel;(direct)-1→(direct),(direct)≠0,(PC)+2+rel→(PC)

5.子程序回来指令

编程时通常都把需求重复施行的一些程序编写成子程序,当需求用它们时,就用一个调用指令使程序按调用的地址去施行,这就需求子程序的调用指令和回来指令。

LCALLaddr16 ;长调用指令,可在64kB空间调用子程序。此刻(PC)+3→(PC),(SP)+1→(SP),(PC7-0)→(SP),(SP)+1→(SP),(PC15-8)→(SP),addr16→(PC),即别离从仓库中弹出调用子程序时压入的回来地址。

ACALLaddr11 ;必定调用指令,可在2kB空间调用子程序,此刻(PC)+2→(PC),(SP)+1→(SP),(PC7-0)→(SP),(SP)+1→(SP),(PC15-8)→(SP),addr11→(PC10-0)。

RET ;子程序回来指令。此刻(SP)→(PC15-8),(SP)-1→(SP),(SP)→(PC7-0),(SP)-1→(SP)RET指令通常安排在子程序的结尾,使程序能从子程序回来到主程序。

RETI ;接连回来指令,除具有RET功用外,还具有康复接连逻辑的功用,需留心的是,RETI指令不能用RET替代。

空操作也是CPU操控指令,它没有使程序搬运的功用,通常用于软件延时。指令为:NOP

上一篇:怎么学习单片机

下一篇:单片机有关常用名词解说

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部