51单片机:汇编指令集总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/belous_zxy/article/details/81916110

运算类:

指令 操作数1 操作数2

                      ADD/ADDC——加法/带进位的加法

                      SUBB——带借位的减法

A Rn
直接地址
@Ri
#立即数
MUL/DIV——乘法/除法 AB

                     INC/DEC——自增/自减

                     ***INC还可以INC DPTR——数据指针自增

A
Rn
@Ri
直接地址
ANL/ORL/XRL——与/或/异或 A Rn
直接地址

                      @Ri

#立即数
直接地址 A
#立即数

                    CLR/CPL——清零/取反

                    DA——十进制加法调整

                    RL/RR——循环左移/循环右移

                    RLC/RRC——带进位循环左移/带进位循环右移

                    SWAP——高低四位交换

A
XCH——交换字节 A

                       Rn

直接地址
@Ri
XCHD——交换后四位 A

                      @Ri

赋值类

指令 操作数1 操作数2
MOV——复制字节 A Rn
直接地址
@Ri
#立即数
Rn A
直接地址
#立即数
直接地址 A
Rn
直接地址
@Ri

                   #立即数

@Ri A
直接地址
#立即数
DPTR #16位立即数
MOVC——复制程序(代码)存储器ROM字节 A

                 @A+DPTR

@A+PC
MOVX——复制外部(数据)存储器字节 A @Ri

                   @DPTR

@Ri A
@DPTR

位操作

指令 操作数1 操作数2
SETB/CLR/CPL——置位/清零取反 C
位地址
ANL/ORL——与/或 C 位地址
/位地址——先取反
MOV——复制位 C 位地址
位地址 C
JC/JNC——C=1跳/C=0跳 相对地址
JB/JNB/JBC——位=1跳/位=0跳/位=1跳且清零位 位地址 相对地址

控制类

指令 操作数1 操作数2

                               ACALL——调用子程序(11位地址)

                               AJMP——无条件跳(11位地址)

11位地址

                               LCALL——调用子程序(16位地址)

                               LJMP——无条件跳(16位地址)

16位地址

                               SJMP——无条件跳(相对地址)

                               JZ/JNZ——A=0跳/A!=0跳

相对地址(下一条指令地址-128~+127)
JMP——无条件跳到A+DPTR @A+DPTR
CJNE——比较字节,不等则跳 A,直接地址 相对地址
A,#立即数
Rn,#立即数
@Ri,#立即数
DJNZ——递减后若不为零跳 Rn 相对地址
直接地址
PUSH/POP——入栈/出栈 直接地址
RET——从子程序返回
RETI——从中断返回
NOP——无作用
/

对操作数以外有影响的指令:

ADD/ADDC

D7进位,CY=1;否则CY=0

D3进位,AC=1;否则AC=0
有符号数溢出时,OV=1;否则OV=0
SUBB D7借位,CY=1;否则CY=0
D3借位,AC=1;否则AC=0
有符号数溢出时,OV=1;否则OV=0
MUL CY=0
乘积大于0xFF,OV=1;否则OV=0
DIV CY=0
除数是0,OV=1;否则OV=0
DA D7进位,CY=1
CJNE

操作数1<操作数2,CY=1;否则CY=0

PUSH SP+1
POP SP-1
ACALL/LCALL SP+2
RET/RETI SP-2

 END

猜你喜欢

转载自blog.csdn.net/belous_zxy/article/details/81916110