当前位置:文档之家› 单片机的指令系统

单片机的指令系统

单片机的指令系统一、数据传送指令数据传送指令主要负责把数据、地址或马上数传送到寄存器或存储单元中。

这类指令共有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间的数据传送。

使用寄存器寻址方式:MO@DPTR,A ;(A)→((DPTR))MOA,@DPTR ;((DPTR))→(A)MOA,@Rj ;((Rj))→(A)MO@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)→CYANLC,/bit;(CY)⑴()→CYORLC,bit ;(CY)⑴(bit)→CYORLC,/bit ;(CY)⑴()→CYCPLC ;()→CYCPLbit ;()→bit4.位变量条件转移指令位变量条件转移指令是以位的状态作为实现程序转移的推断条件: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空间。

相关主题