单片机指令大全.docx

上传人:b****6 文档编号:4687075 上传时间:2022-12-07 格式:DOCX 页数:10 大小:22.33KB
下载 相关 举报
单片机指令大全.docx_第1页
第1页 / 共10页
单片机指令大全.docx_第2页
第2页 / 共10页
单片机指令大全.docx_第3页
第3页 / 共10页
单片机指令大全.docx_第4页
第4页 / 共10页
单片机指令大全.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

单片机指令大全.docx

《单片机指令大全.docx》由会员分享,可在线阅读,更多相关《单片机指令大全.docx(10页珍藏版)》请在冰豆网上搜索。

单片机指令大全.docx

单片机指令大全

单片机指令大全

指令格式              功能简述                  字节数      周期

一、数据传送类指令

MOV  A,Rn              寄存器送累加器                  1          1

MOV  Rn,A              累加器送寄存器                  1          1

MOV  A,@Ri            内部RAM单元送累加器            1          1

MOV  @Ri,A            累加器送内部RAM单元            1          1

MOV  A,#data          立即数送累加器                  2          1

MOV  A,direct          直接寻址单元送累加器            2          1

MOV  direct,A          累加器送直接寻址单元            2          1

MOV  Rn,#data          立即数送寄存器                  2          1

MOV  direct,#data      立即数送直接寻址单元            3          2

MOV  @Ri,#data        立即数送内部RAM单元            2          1

MOV  direct,Rn        寄存器送直接寻址单元            2          2

MOV  Rn,direct        直接寻址单元送寄存器            2          2

MOV  direct,@Ri      内部RAM单元送直接寻址单元      2          2

MOV  @Ri,direct      直接寻址单元送内部RAM单元      2          2

MOV  direct2,direct1    直接寻址单元送直接寻址单元      3          2

MOV  DPTR,#data16      16位立即数送数据指针            3          2

MOVX  A,@Ri            外部RAM单元送累加器(8位地址)    1          2

MOVX  @Ri,A            累加器送外部RAM单元(8位地址)    1          2

MOVX  A,@DPTR          外部RAM单元送累加器(16位地址)  1          2

MOVX  @DPTR,A          累加器送外部RAM单元(16位地址)  1          2

MOVC  A,@A+DPTR        查表数据送累加器(DPTR为基址)    1          2

MOVC  A,@A+PC          查表数据送累加器(PC为基址)      1          2

XCH  A,Rn              累加器与寄存器交换              1          1

XCH  A,@Ri            累加器与内部RAM单元交换        1          1

XCHD  A,direct          累加器与直接寻址单元交换        2          1

XCHD  A,@Ri            累加器与内部RAM单元低4位交换    1          1

SWAP  A                  累加器高4位与低4位交换          1          1

POP  direct              栈顶弹出指令直接寻址单元        2          2

PUSH  direct              直接寻址单元压入栈顶            2          2

二、算术运算类指令

ADD  A,Rn              累加器加寄存器                  1          1

ADD  A,@Ri            累加器加内部RAM单元            1          1

ADD  A,direct          累加器加直接寻址单元            2          1

ADD  A,#data          累加器加立即数                  2          1

ADDC  A,Rn              累加器加寄存器和进位标志        1          1

ADDC  A,@Ri            累加器加内部RAM单元和进位标志  1          1

ADDC  A,#data          累加器加立即数和进位标志        2          1

ADDC  A,direct          累加器加直接寻址单元和进位标志  2          1

INC  A                  累加器加1                      1          1

INC  Rn                  寄存器加1                      1          1

INC  direct              直接寻址单元加1                2          1

INC  @Ri                内部RAM单元加1                  1          1

INC  DPTR                数据指针加1                    1          2

DA    A                  十进制调整                      1          1

SUBB  A,Rn              累加器减寄存器和进位标志        1          1

SUBB  A,@Ri            累加器减内部RAM单元和进位标志  1          1

SUBB  A,#data          累加器减立即数和进位标志        2          1

SUBB  A,direct          累加器减直接寻址单元和进位标志  2          1

DEC  A                  累加器减1                      1          1

DEC  Rn                  寄存器减1                      1          1

DEC  @Ri                内部RAM单元减1                  1          1

DEC  direct              直接寻址单元减1                2          1

MUL  AB                  累加器乘寄存器B                1          4

DIV  AB                  累加器除以寄存器B              1          4

三、逻辑运算类指令

ANL  A,Rn              累加器与寄存器                  1          1

ANL  A,@Ri            累加器与内部RAM单元            1          1

ANL  A,#data          累加器与立即数                  2          1

ANL  A,direct          累加器与直接寻址单元            2          1

ANL  direct,A          直接寻址单元与累加器            2          1

ANL  direct,#data      直接寻址单元与立即数            3          1

ORL  A,Rn              累加器或寄存器                  1          1

ORL  A,@Ri            累加器或内部RAM单元            1          1

ORL  A,#data            累加器或立即数                  2          1

ORL  A,direct          累加器或直接寻址单元            2          1

ORL  direct,A          直接寻址单元或累加器            2          1

ORL  direct,#data      直接寻址单元或立即数            3          1

XRL  A,Rn              累加器异或寄存器                1          1

XRL  A,@Ri            累加器异或内部RAM单元          1          1

XRL  A,#data            累加器异或立即数                2          1

XRL  A,direct          累加器异或直接寻址单元          2          1

XRL  direct,A          直接寻址单元异或累加器          2          1

XRL  direct,#data      直接寻址单元异或立即数          3          2

RL    A                  累加器左循环移位                1          1

RLC  A                  累加器连进位标志左循环移位      1          1

RR    A                  累加器右循环移位                1          1

RRC  A                  累加器连进位标志右循环移位      1          1

CPL  A                  累加器取反                      1          1

CLR  A                  累加器清零                      1          1

四、控制转移类指令类

ACCALLaddr11            2KB范围内绝对调用              2          2

AJMP  addr11            2KB范围内绝对转移              2          2

LCALL  addr16            2KB范围内长调用                3          2

LJMP  addr16            2KB范围内长转移                3          2

SJMP  rel                相对短转移                      2          2

JMP    @A+DPTR          相对长转移                      1          2

RET                      子程序返回                      1          2

RET1                      中断返回                        1          2

JZ    rel                累加器为零转移                  2          2

JNZ    rel                累加器非零转移                  2          2

CJNE  A,#data,rel    累加器与立即数不等转移          3          2

CJNE  A,direct,rel  累加器与直接寻址单元不等转移    3          2

CJNE  Rn,#data,rel    寄存器与立即数不等转移          3          2

CJNE  @Ri,#data,rel  RAM单元与立即数不等转移        3          2

DJNZ  Rn,rel          寄存器减1不为零转移            2          2

DJNZ  direct  ,rel      直接寻址单元减1不为零转移      3          2

NOP                      空操作                          1          1

五、布尔操作类指令

MOV    C,bit            直接寻址位送C                  2          1

MOV    bit,C            C送直接寻址位                  2          1

CLR    C                  C清零                          1          1

CLR    bit                直接寻址位清零                  2          1

CPL    C                  C取反                          1          1

CPL    bit                直接寻址位取反                  2          1

SETB  C                  C置位                          1          1

SETB  bit                直接寻址位置位                  2          1

ANL    C,bit            C逻辑与直接寻址位              2          2

ANL    C,/bit          C逻辑与直接寻址位的反          2          2

ORL    C,bit            C逻辑或直接寻址位              2          2

ORL    C,/bit          C逻辑或直接寻址位的反          2          2

JC    rel                C为1转移                        2          2

JNC    rel                C为零转移                      2          2

JB    bit,rel          直接寻址位为1转移              3          2

JNB    bit,rel          直接寻址为0转移                3          2

JBC    bit,rel          直接寻址位为1转移并清该位      3          2

[1].以累加器A为目的操作数类指令(4条)

这4条指令的作用是把源操作数指向的内容送到累加器A。

有直接、立即数、寄存器和寄存器间接寻址方式:

MOVA,data;(data)→(A)直接单元地址中的内容送到累加器A

MOVA,#data;#data→(A)立即数送到累加器A中

MOVA,Rn;(Rn)→(A)Rn中的内容送到累加器A中

MOVA,@Ri;((Ri))→(A)Ri内容指向的地址单元中的内容送到累加器A

[2].以寄存器Rn为目的操作数的指令(3条)

这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。

有直接、立即和寄存器寻址方式:

MOVRn,data;(data)→(Rn)直接寻址单元中的内容送到寄存器Rn中

MOVRn,#data;#data→(Rn)立即数直接送到寄存器Rn中

MOVRn,A;(A)→(Rn)累加器A中的内容送到寄存器Rn中

[3].以直接地址为目的操作数的指令(5条)

这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。

有直接、立即、寄存器和寄存器间接4种寻址方式:

MOVdata,data;(data)→(data)直接地址单元中的内容送到直接地址单元

MOVdata,#data;#data→(data)立即数送到直接地址单元

MOVdata,A;(A)→(data)累加器A中的内容送到直接地址单元

MOVdata,Rn;(Rn)→(data)寄存器Rn中的内容送到直接地址单元

MOVdata,@Ri;((Ri))→(data)寄存器Ri中的内容指定的地址单元中数据送到直接地址单元

[4].以间接地址为目的操作数的指令(3条)

这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。

有直接、立即和寄存器3种寻址方式:

MOV@Ri,data;(data)→((Ri))直接地址单元中的内容送到以Ri中的内容为地址的RAM单元

MOV@Ri,#data;#data→((Ri))立即数送到以Ri中的内容为地址的RAM单元

MOV@Ri,A;(A)→((Ri))累加器A中的内容送到以Ri中的内容为地址的RAM单元

[5].查表指令(2条)

这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式:

MOVCA,@A+DPTR;((A))+(DPTR)→(A)表格地址单元中的内容送到累加器A中

MOVCA,@A+PC;((PC))+1→(A),((A))+(PC)→(A)表格地址单元中的内容送到累加器A中

[6].累加器A与片外数据存储器RAM传送指令(4条)

这4条指令的作用是累加器A与片外RAM间的数据传送。

使用寄存器寻址方式:

MOVX@DPTR,A;(A)→((DPTR))累加器中的内容送到数据指针指向片外RAM地址中

MOVXA,@DPTR;((DPTR))→(A)数据指针指向片外RAM地址中的内容送到累加器A中

MOVXA,@Ri;((Ri))→(A)寄存器Ri指向片外RAM地址中的内容送到累加器A中

MOVX@Ri,A;(A)→((Ri))累加器中的内容送到寄存器Ri指向片外RAM地址中

[7].堆栈操作类指令(2条)

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

这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。

需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。

入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。

PUSHdata;(SP)+1→(SP),(data)→(SP)堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中

POPdata;(SP)→(data)(SP)-1→(SP),堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作

[8].交换指令(5条)

这5条指令的功能是把累加器A中的内容与源操作数所指的数据相互交换。

XCHA,Rn;(A)←→(Rn)累加器与工作寄存器Rn中的内容互换

XCHA,@Ri;(A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的内容互换

XCHA,data;(A)←→(data)累加器与直接地址单元中的内容互换

XCHDA,@Ri;(A3-0)←→((Ri)3-0)累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换

SWAPA;(A3-0)←→(A7-4)累加器中的内容高低半字节互换

[9].16位数据传送指令(1条)

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

MOVDPTR,#data16;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL

MCS-51算术运算指令

算术运算指令共有24条,算术运算主要是执行加、减、乘、除法四则运算。

另外MCS-51指令系统中有相当一部分是进行加、减1操作,BCD码的运算和调整,我们都归类为运算指令。

虽然MCS-51单片机的算术逻辑单元ALU仅能对8位无符号整数进行运算,但利用进位标志C,则可进行多字节无符号整数的运算。

同时利用溢出标志,还可以对带符号数进行补码运算。

需要指出的是,除加、减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。

这在使用中应特别注意。

[1].加法指令(4条)

这4条指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器A的内容相加,运算结果存在A中。

ADDA,#data;(A)+#data→(A)累加器A中的内容与立即数#data相加,结果存在A中

ADDA,data;(A)+(data)→(A)累加器A中的内容与直接地址单元中的内容相加,结果存在A中

ADDA,Rn;(A)+(Rn)→(A)累加器A中的内容与工作寄存器Rn中的内容相加,结果存在A中

ADDA,@Ri;(A)+((Ri))→(A)累加器A中的内容与工作寄存器Ri所指向地址单元中的内容相加,结果存在A中

[2].带进位加法指令(4条)

这4条指令除与[1]功能相同外,在进行加法运算时还需考虑进位问题。

ADDCA,data;(A)+(data)+(C)→(A)累加器A中的内容与直接地址单元的内容连同进位位相加,结果存在A中

ADDCA,#data;(A)+#data+(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1