微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机指令集.doc

51单片机指令集.doc

时间:10-02 整理:3721RD 点击:
MCS-51单片机的指令集
1、数据传送类指令
助记符                                功能说明                                        字节数                振荡周期  
MOV        A,Rn                        寄存器内容送入累加器                                1                12
MOV        A,direct                直接地址单元中的数据送入累加器                        2                12
MOV        A,@Ri                        间接RAM中的数据送入累加器                        1                12
MOV        A,#data8                8位立即数送入累加器                                2                12
MOV        Rn,A                        累加器内容送入寄存器                                1                12
MOV        Rn,direct                直接地址单元中的数据送入寄存器                        2                24
MOV        Rn,#data8                8位立即数送入寄存器                                2                12
MOV        direct,A                累加器内容送入直接地址单元                        2                12
MOV        direct,Rn                寄存器内容送入直接地址单元                        2                24
MOV        direct,direct                直接地址单元中的数据送入直接地址单元                3                24
MOV        direct,@Ri                间接RAM中的数据送入直接地址单元                        2                24
MOV        direct,#data8                8位立即数送入直接地址单元                        3                24
MOV        @Ri,A                        累加器内容送入间接RAM单元                        1                12
MOV        @Ri,direct                直接地址单元中的数据送入间接RAM单元                2                24
MOV        @Ri,#data8                8位立即数送入间接RAM单元                        2                12
MOV        DPTR,#data16                16位立即数地址送入地址寄存器                        3                24
MOV        A,@A+DPTR                以DPTR为基地址变址寻址单元中的数据送入累加器        1                24
MOV        A,@A+PC                        以PC为基地址变址寻址单元中的数据送入累加器        1                24
MOV        A,@Ri                        外部RAM(8位地址)送入累加器                        1                24
MOV        A,@DPTR                        外部RAM(16位地址)送入累加器                        1                24
MOV        @Ri,A                        累加器送入外部RAM(8位地址)                        1                24
MOV        @DPTR,A                        累加器送入外部RAM(16位地址)                        1                24
PUSH        direct                        直接地址单元中的数据压入堆栈                        2                24
POP        DIRECT                        堆栈中的数据弹出到直接地址单元                        2                24
XCH        A,Rn                        寄存器与累加器交换                                1                12
XCH        A,direct                直接地址单元与累加器交换                        2                12
XCH        A,@Ri                        间接RAM与累加器交换                                1                12
XCHD        A,@Ri                        间接RAM与累加器进行低半字节交换                        1                12

2、算术操作类指令
助记符                                功能说明                                        字节数                振荡周期
ADD        A,Rn                        寄存器内容加到累加器                                1                12
ADD        A,direct                直接地址单元加到累加器                                2                12
ADD        A,@Ri                        间接RAM内容加到累加器                                1                12
ADD        A,#data8                8位立即数加到累加器                                2                12
ADDC        A,Rn                        寄存器内容带进位加到累加器                        1                12
ADDC        A,dirct                        直接地址单元带进位加到累加器                        2                12
ADDC        A,@Ri                        间接RAM内容带进位加到累加器                        1                12
ADDC        A,#data8                8位立即数带进位加到累加器                        2                12
SUBB        A,Rn                        累加器带借位减寄存器内容                        1                12
SUBB        A,dirct                        累加器带借位减直接地址单元                        2                12
SUBB        A,@Ri                        累加器带借位减间接RAM内容                        1                12
SUBB        A,#data8                累加器带借位减8位立即数                                2                12
INC        A                        累加器加1                                        1                12
INC        Rn                        寄存器加1                                        1                12
INC        direct                        直接地址单元内容加1                                2                12
INC        @Ri                        间接RAM内容加1                                        1                12
INC        DPTR                        DPTR加1                                                1                24
DEC        A                        累加器减1                                        1                12
DEC        Rn                        寄存器减1                                        1                12
DEC        direct                        直接地址单元内容减1                                2                12
DEC        @Ri                        间接RAM内容减1                                        1                12
MUL        AB                        A乘以B                                                1                48
div        AB                        A除以B                                                1                48
DA        A                        累加器进行十进制转换                                1                12

3、逻辑操作类指令
助记符                                功能说明                                        字节数                振荡周期
ANL        A,Rn                        累加器与寄存器相“与”                                1                12
ANL        A,direct                累加器与直接地址单元相“与”                        2                12
ANL        A,@Ri                        累加器与间接RAM内容相“与”                        1                12
ANL        A,#data8                累加器与8位立即数相“与”                        2                12
ANL        direct,A                直接地址单元与累加器相“与”                        2                12
ANL        direct,#data8                直接地址单元与8位立即数相“与”                        3                24
ORL        A,Rn                        累加器与寄存器相“或”                                1                12
ORL        A,direct                累加器与直接地址单元相“或”                        2                12
ORL        A,@Ri                        累加器与间接RAM内容相“或”                        1                12
ORL        A,#data8                累加器与8位立即数相“或”                        2                12
ORL        direct,A                直接地址单元与累加器相“或”                        2                12
ORL        direct,#data8                直接地址单元与8位立即数相“或”                        3                24
XRL        A,Rn                        累加器与寄存器相“异或”                        1                12
XRL        A,direct                累加器与直接地址单元相“异或”                        2                12
XRL        A,@Ri                        累加器与间接RAM内容相“异或”                        1                12
XRL        A,#data8                累加器与8位立即数相“异或”                        2                12
XRL        direct,A                直接地址单元与累加器相“异或”                        2                12
XRL        direct,#data8                直接地址单元与8位立即数相“异或”                3                24
CLR        A                        累加器清0                                        1                12
CPL        A                        累加器求反                                        1                12
RL        A                        累加器循环左移                                        1                12
RLC        A                        累加器带进位循环左移                                1                12
RR        A                        累加器循环右移                                        1                12
RRC        A                        累加器带进位循环右移                                1                12
SWAP        A                        累加器半字节交换                                1                12

4、控制转移类指令
助记符                                功能说明                                        字节数                振荡周期
ACALL        addr11                        绝对短调用子程序                                2                24
LACLL        addr16                        长调用子程序                                        3                24
RET                                子程序返回                                        1                24
RETI                                中断返回                                        1                24
AJMP        addr11                        绝对短转移                                        2                24
LJMP        addr16                        长转移                                                3                24
SJMP        rel                        相对转移                                        2                24
JMP        @A+DPTR                        相对于DPTR的间接转移                                1                24
JZ        rel                        累加器为零转移                                        2                24
JNZ        rel                        累加器非零转移                                        2                24
CJNE        A,direct,rel                累加器与直接地址单元比较,不等则转移                3                24
CJNE        A,#data8,rel                累加器与8位立即数比较,不等则转移                3                24
CJNE        Rn,#data8,rel                寄存器与8位立即数比较,不等则转移                3                24
                                (相等则执行本指令的下一条)
CJNE        @Ri,#data8,rel                间接RAM单元,不等则转移                                3                24
                                (但有时还想得知两数比较之后哪个大,哪个小,
                                本条指令也具有这样的功能,如果两数不相等,
                                则CPU还会反映出哪个数大,哪个数小,
                                这是用CY(进位位)来实现的。
                                如果前面的数(A中的)大,则CY=0,否则CY=1)
DJNZ        Rn,rel                        寄存器减1,非零转移                                3                24
DJNZ        direct,rel                直接地址单元减1,非零转移                        3                24
NOP                                空操作                                                1                12
控制转移指令共有17条,可分为“无条件转移指令” “有条件转移指令” “子程序调用指令” 及 “返回指令”。

5、布尔变量操作类指令
助记符                                功能说明                                        字节数                振荡周期
CLR        C                        清进位位                                        1                12
CLR        bit                        清直接地址位                                        2                12
SETB        C                        置进位位                                        1                12
SETB        bit                        置直接地址位                                        2                12
CPL        C                        进位位求反                                        1                12
CPL        bit                        直接地址位求反                                        2                12
ANL        C,bit                        进位位和直接地址位相“与”                        2                24
ANL        C,/bit                        进位位和直接地址位的反码相“与”                2                24
ORL        C,bit                        进位位和直接地址位相“或”                        2                24
ORL        C,/bit                        进位位和直接地址位的反码相“或”                2                24
MOV        C,bit                        直接地址位送入进位位                                2                12
MOV        bit,C                        进位位送入直接地址位                                2                24
JC        rel                        进位位为1则转移(CY=O不转移,=1转移)                2                24
JNC        rel                        进位位为0则转移(和上面相反)                        2                24
JB        bit,rel                        直接地址位为1则转移                                3                24
JNB        bit,rel                        直接地址位为0则转移                                3                24
JBC        bit,rel                        直接地址位为1则转移,该位清零                        3                24

伪指令
助记符                                功能说明                                        字节数                振荡周期
ORG                                设置程序起始地址               
END                                标志源代码结束               
EQU                                定义常数               
SET                                定义整型数               
DATA                                给字节类型符号定值               
BYTE                                给字节类型符号定值               
WROD                                给字类型符号定值               
BIT                                给位地址取名               
ALTNAME                                用自定义名取代保留字               
DB                                给一块连续的存储区装载字节型数据               
DW                                给一块连续的存储区装载字型数据               
DS                                预留一个连续的存储区或装入指定字节。               
INCLUDE                                将一个源文件插入程序中        I        
TITLE                                列表文件中加入标题行               
NOLIST                                汇编时不产生列表文件               
NOCODE                                条件汇编时,条件为假的不产生清单               

寄存器:
符号                地址                功能介绍
B                F0H                B寄存器
ACC                E0H                累加器
PSW                D0H                程序状态字
IP                B8H                中断优先级控制寄存器
P3                B0H                P3口锁存器
IE                A8H                中断允许控制寄存器
P2                A0H                P2口锁存器
SBUF                99H                串行口锁存器
SCON                98H                串行口控制寄存器
P1                90H                P1口锁存器
TH1                8DH                定时器/计数器1(高8位)
TH0                8CH                定时器/计数器1(低8位)
TL1                8BH                定时器/计数器0(高8位)
TL0                8AH                定时器/计数器0(低8位)
TMOD                89A                定时器/计数器方式控制寄存器
TCON                88H                定时器/计数器控制寄存器
DPH                83H                数据地址指针(高8位)
DPL                82H                数据地址指针(低8位)
SP                81H                堆栈指针
P0                80H                P0口锁存器
PCON                87H                电源控制寄存器

非常好,谢谢

有些看不懂了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top