指令格式 功能简述 字节数 周期
一、数据传送类指令
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 栈顶d出指令直接寻址单元 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
四、控制转移类指令类
ACCALL addr11 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转移
单片机指令功能一览表助记符 代码 说明
MOVA,Rn E8~EF寄存器A
MOVA,direct E5 dircet直接字节送A
MOVA,@Ri ER~E7间接RAM送A
MOVA,#data 74 data 立即数送A
MOVRn,A F8~FFA送寄存器
MOVRn,dircet A8~AF dircet 直接字节送寄存器
MOVRn,#data 78~7F data 立即数送寄存器
MOVdircet,A F5 dircetA送直接字节
MOVdircet,Rn 88~8F dircet 寄存器送直接字节
MOVdircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节
MOVdircet,@Ro86~87间接RAM送直接字节
MOVdircet,#data 75 dircet data 立即数送直接字节
MOV@Ri,A F6~F7A送间接RAM
MOV@Ri,#data 76~77 data 直接字节送间接RAM
MOV@Ri,#data 76~77 data 立即数送间接RAM
MOVDPTR,#data16 90 data 15~8 16位常数送数据指针
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮
器字节选A
MOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送A
MOVX A,@Ri E2~E3送外部数据(8位地址)送A
MOVX A,@DPTR E0 送外部数据(16位地址)送A
MOVX @Ri,A F2~F3A送外部数据(8位地址)
MOVX @DPTR,A F0 A送外部数据(16位地址)
PUSH dircetC0 dircet直接字节进栈,SP加1
POPdircetD0 dircet直接字节退栈,SP减1
XCHA,Rn C8~CF交换A和寄存器
XCHA,dircet C5 dircet交换A和直接字节
XCHA,@Ri C6~C7交换A和间接RAM
XCHA,@Ri D6~D7交换A和间接RAM的低位
SWAP A C4
算术 *** 作(A的二个半字节交换)
ADDA,Rn 28~2F 寄存器加到A
ADDA,dircet 25 dircet 直接字节加到A
ADDA,@Ri 26~27 间接RAM加到A
ADDA,#data 24data立即数加到A
ADDA,Rn 38~3F 寄存器和进位位加到A
ADDA,dircet 35dircet 直接字节和进位位加到A
ADDA,@Ri 36~37 间接字节和进位位加到A
ADDA,data34 data 立即数和进位位加到A
ADDA,Rn 98~9F A减去寄存器和进位位
ADDA,dircet 95 dircet A减去直接字节和进位位
ADDA,@Ri 36~37 间接RAM和进位位加到A
ADDA,data34 data 立即数和进位位加到A
SUBB A,Rn 98~9F A减去寄存器和进位位
SUBB A,dircet 95 dircet A减去直接字节和进位位
SUBB A,@Ri 96~97 A减去间接RAM和进位位
SUBB A,#data 94 data A减去立即数和进位位
INCA 04A加1
INCRn08~0F 寄存器加1
INCdircet05 dircet 直接字节加1
INC@Ri 06~07 间接RAM加1
DECA 14A减1
DECRn18~1F 寄存器减1
DECdircet15 dircet 直接字节减1
DEC@Ri 16~17 间接RAM减1
INCDPTR A3数据指针加1
MULABA4A乘以B
DIVAB84A除以B
DA A D4A的十进制加法调整
逻辑 *** 作
ANLA,Rn 58~5F 寄存器“与”到A
ANLA,dircet 55 dircet 直接字节“与”到A
ANLA,@Ri 56~57 间接RAm“与”到A
ANLA,#data 54 data 立即数“与”到A
ANLdircet A 52 dircet A“与”到直接字节
ANLdircet,#data 53 dircet data立即数“与”到直接字节
ORLA,Rn 48~4F 寄存器“或”到A
ORLA,dircet 45 dircet 直接字节“或”到A
ORLA,@Ri 46~47 间接RAM“或”到A
ORLA,#data 44 data 立即数“或”到A
ORLdircet,A 42 dircet A“或”到直接字节
ORLdircet,#data 43 dircet data立即数“或”到直接字节
XRLA,Rn 68~6F 寄存器“异或”到A
XRLA,dircet 65 dircet 直接字节“异或”到A
XRLA,@Ri 66~67 间接RAM“异或”到A
XRLA,#data 64 data 立即数“异或”到A
XRLdircet A 62 dircet A“异或”到直接字节
XRLdircet,#data 63 dircet data立即数“异或”到直接字节
CLRA E4清零
CPLA F4A取反
RL A 23A左环移
RLCA 33A通过进位左环移
RR A 03A右环移
RRCA 13A通过进位右环移
控制程序转移
ACALL addr 11 *1 addr(a7~a0)绝对子程序调用
LCALL addr 16 12 addr(15~8) 长子程序调用
addr(7~0)
RET 22子程序调用返回
RETI addr 11 32中断调用返回
AJMP addr 11 △1 addr(a7~a6) 绝对转移
LJMP addr 16 02addr(15~8) 长转移
addr(7~0)
SJMP rel 80 rel短转移,相对转移
JMP@A+DPTR 73相对于DPTR间接转移
JZ rel 60 relA为零转移
JNZrel 70 relA为零转移
CJNE A,dircet,rel B5 dircet rel 直接字节与A比较,不等则转移
CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移
CJNE A,Rn,#data,relB8~BF data rel立即数与寄存器比较,不等则转移
CJNE @Ri,#data,rel B6~B7 data rel立即数与间接RAM比较,不等则转移
DJNZ Rn,relD8~DF rel 寄存器减1,不为零则转移
DJNZ dircet,relB5 dircet rel 直接字节减1,不为零则转移
NOP 00空 *** 作
*=a10a9a8l
△=a10a9a80
布尔变量 *** 作
CLRC C3清零进位
CLRbit C2清零直接位
SETB C D3置位进位
SETB bit D2置位直接位
CPLC B3进位取反
CPLbit B2直接位取反
ANLC,bit 82 dit直接数“与”到进位
ANLC,/bitB0直接位的反“与”到进位
ORLC,bit 72 bit直接位“或”到进位
ORLC,/bitA0 bit直接位的反“或”到进位
MOVC,bit A2 bit直接位送进位
MOVbit,C 92 bit进位送直接位
JC rel 40 rel进位位为1转移
JNCrel 50 rel进位位为0转移
JB bit,rel 20 bit rel直接位为1相对转移
JNBbit,rel 30 bit rel直接位为0相对转移
JBCbit,rel 10 bit rel直接位为1相对转移,然后清零该位
单片机程序暂停指令的一般实现方法有两种:一种是使用硬件实现暂停,一种是使用软件实现暂停。硬件实现暂停可以通过在单片机上设置一个外部中断源,当外部中断源被触发时,单片机将被暂停,而软件实现暂停则是在单片机程序中添加一个专门的暂停指令,当程序执行暂停指令时,单片机将暂停执行程序。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)