单片机指令功能一览表.docx
《单片机指令功能一览表.docx》由会员分享,可在线阅读,更多相关《单片机指令功能一览表.docx(8页珍藏版)》请在冰豆网上搜索。
单片机指令功能一览表
单片机指令功能一览表
助记符代码说明
MOVA,RnE8~EF寄存器A
MOVA,directE5dircet直接字节送A
MOVA,@RiER~E7间接RAM送A
MOVA,#data74data立即数送A
MOVRn,AF8~FFA送寄存器
MOVRn,dircetA8~AFdircet直接字节送寄存器
MOVRn,#data78~7Fdata立即数送寄存器
MOVdircet,AF5dircetA送直接字节
MOVdircet,Rn88~8Fdircet寄存器送直接字节
MOVdircet1,dircet285dircet1dircet2直接字节送直接字节
MOVdircet,@Ro86~87间接RAM送直接字节
MOVdircet,#data75dircetdata立即数送直接字节
MOV@Ri,AF6~F7A送间接RAM
MOV@Ri,#data76~77data直接字节送间接RAM
MOV@Ri,#data76~77data立即数送间接RAM
MOVDPTR,#data1690data15~816位常数送数据指针
data7~0
MOVCA,@A+DPTR93由((A)+(DPTR))寻址的程序存贮
器字节选A
MOVCA,@A+PC83由((A)+(PC));寻址的程序存贮器字节送A
MOVXA,@RiE2~E3送外部数据(8位地址)送A
MOVXA,@DPTRE0送外部数据(16位地址)送A
MOVX@Ri,AF2~F3A送外部数据(8位地址)
MOVX@DPTR,AF0A送外部数据(16位地址)
PUSHdircetC0dircet直接字节进栈,SP加1
POPdircetD0dircet直接字节退栈,SP减1
XCHA,RnC8~CF交换A和寄存器
XCHA,dircetC5dircet交换A和直接字节
XCHA,@RiC6~C7交换A和间接RAM
XCHA,@RiD6~D7交换A和间接RAM的低位
SWAPAC4
算术操作(A的二个半字节交换)
ADDA,Rn28~2F寄存器加到A
ADDA,dircet25dircet直接字节加到A
ADDA,@Ri26~27间接RAM加到A
ADDA,#data24data立即数加到A
ADDA,Rn38~3F寄存器和进位位加到A
ADDA,dircet35dircet直接字节和进位位加到A
ADDA,@Ri36~37间接字节和进位位加到A
ADDA,data34data立即数和进位位加到A
ADDA,Rn98~9FA减去寄存器和进位位
ADDA,dircet95dircetA减去直接字节和进位位
ADDA,@Ri36~37间接RAM和进位位加到A
ADDA,data34data立即数和进位位加到A
SUBBA,Rn98~9FA减去寄存器和进位位
SUBBA,dircet95dircetA减去直接字节和进位位
SUBBA,@Ri96~97A减去间接RAM和进位位
SUBBA,#data94dataA减去立即数和进位位
INCA04A加1
INCRn08~0F寄存器加1
INCdircet05dircet直接字节加1
INC@Ri06~07间接RAM加1
DECA14A减1
DECRn18~1F寄存器减1
DECdircet15dircet直接字节减1
DEC@Ri16~17间接RAM减1
INCDPTRA3数据指针加1
MULABA4A乘以B
DIVAB84A除以B
DAAD4A的十进制加法调整
逻辑操作
ANLA,Rn58~5F寄存器“与”到A
ANLA,dircet55dircet直接字节“与”到A
ANLA,@Ri56~57间接RAm“与”到A
ANLA,#data54data立即数“与”到A
ANLdircetA52dircetA“与”到直接字节
ANLdircet,#data53dircetdata立即数“与”到直接字节
ORLA,Rn48~4F寄存器“或”到A
ORLA,dircet45dircet直接字节“或”到A
ORLA,@Ri46~47间接RAM“或”到A
ORLA,#data44data立即数“或”到A
ORLdircet,A42dircetA“或”到直接字节
ORLdircet,#data43dircetdata立即数“或”到直接字节
XRLA,Rn68~6F寄存器“异或”到A
XRLA,dircet65dircet直接字节“异或”到A
XRLA,@Ri66~67间接RAM“异或”到A
XRLA,#data64data立即数“异或”到A
XRLdircetA62dircetA“异或”到直接字节
XRLdircet,#data63dircetdata立即数“异或”到直接字节
CLRAE4清零
CPLAF4A取反
RLA23A左环移
RLCA33A通过进位左环移
RRA03A右环移
RRCA13A通过进位右环移
控制程序转移
ACALLaddr11*1addr(a7~a0)绝对子程序调用
LCALLaddr1612addr(15~8)长子程序调用
addr(7~0)
RET22子程序调用返回
RETIaddr1132中断调用返回
AJMPaddr11△1addr(a7~a6)绝对转移
LJMPaddr1602addr(15~8)长转移
addr(7~0)
SJMPrel80rel短转移,相对转移
JMP@A+DPTR73相对于DPTR间接转移
JZrel60relA为零转移
JNZrel70relA为零转移
CJNEA,dircet,relB5dircetrel直接字节与A比较,不等则转移
CJNEA,#data,relB4datarel立即数与A比较,不等则转移
CJNEA,Rn,#data,relB8~BFdatarel立即数与寄存器比较,不等则转移
CJNE@Ri,#data,relB6~B7datarel立即数与间接RAM比较,不等则转移
DJNZRn,relD8~DFrel寄存器减1,不为零则转移
DJNZdircet,relB5dircetrel直接字节减1,不为零则转移
NOP00空操作
*=a10a9a8l
△=a10a9a80
布尔变量操作
CLRCC3清零进位
CLRbitC2清零直接位
SETBCD3置位进位
SETBbitD2置位直接位
CPLCB3进位取反
CPLbitB2直接位取反
ANLC,bit82dit直接数“与”到进位
ANLC,/bitB0直接位的反“与”到进位
ORLC,bit72bit直接位“或”到进位
ORLC,/bitA0bit直接位的反“或”到进位
MOVC,bitA2bit直接位送进位
MOVbit,C92bit进位送直接位
JCrel40rel进位位为1转移
JNCrel50rel进位位为0转移
JBbit,rel20bitrel直接位为1相对转移
JNBbit,rel30bitrel直接位为0相对转移
JBCbit,rel10bitrel直接位为1相对转移,然后清零该位
[1].循环移位指令(4条)
RLA;累加器A中的内容左移一位
RRA;累加器A中的内容右移一位
RLCA;累加器A中的内容连同进位位CY左移一位
RRCA;累加器A中的内容连同进位位CY右移一位
[2].累加器半字节交换指令(1条)
SWAPA;累加器中的内容高低半字节互换
[3].求反指令(1条)
CPLA;累加器中的内容按位取反
[4].清零指令(1条)
CLRA;0→(A),累加器中的内容清0
[5].逻辑与操作指令(6条)
ANLA,data;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。
结果存在寄存器A中。
ANLdata,#data;直接地址单元中的内容和立即数执行与逻辑操作。
结果存在直接地址单元中。
ANLA,#data;累加器A的内容和立即数执行与逻辑操作。
结果存在累加器A中。
ANLA,Rn;累加器A的内容和寄存器Rn中的内容执行与逻辑操作。
结果存在累加器A中。
ANLdata,A;直接地址单元中的内容和累加器A的内容执行与逻辑操作。
结果存在直接地址单元中。
ANLA,@Ri;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行与逻辑操作。
结果存在累加器A中。
[6].逻辑或操作指令(6条)
这组指令的作用是将两个单元中的内容执行逻辑或操作。
如果直接地址是I/O地址,则为“读—修改—写”操作。
ORLA,data;累加器A中的内容和直接地址单元中的内容执行逻辑或操作。
结果存在寄存器A中。
ORLdata,#data;直接地址单元中的内容和立即数执行逻辑或操作。
结果存在直接地址单元中。
ORLA,#data;累加器A的内容和立即数执行逻辑或操作。
结果存在累加器A中。
ORLA,Rn;累加器A的内容和寄存器Rn中的内容执行逻辑或操作。
结果存在累加器A中。
ORLdata,A;直接地址单元中的内容和累加器A的内容执行逻辑或操作。
结果存在直接地址单元中。
ORLA,@Ri;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑或操作。
结果存在累加器A中。
[7].逻辑异或操作指令(6条)
XRLA,data;累加器A中的内容和直接地址单元中的内容执行逻辑异或操作。
结果存在寄存器A中。
XRLdata,#data;直接地址单元中的内容和立即数执行逻辑异或操作。
结果存在直接地址单元中。
XRLA,#data;累加器A的内容和立即数执行逻辑异或操作。
结果存在累加器A中。
XRLA,Rn;累加器A的内容和寄存器Rn中的内容执行逻辑异或操作。
结果存在累加器A中。
XRLdata,A;直接地址单元中的内容和累加器A的内容执行逻辑异或操作。
结果存在直接地址单元中。
XRLA,@Ri;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑异或操作。
结果存在累加器A中
控制转移类指令分析
[1].无条件转移指令(4条)
LJMPaddr16;addr16→(PC),给程序计数器赋予新值(16位地址)
AJMPaddr11;(PC)+2→(PC),addr11→(PC10-0)程序计数器赋予新值(11位地址),(PC15-11)不改变
SJMPrel;(PC)+2+rel→(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值
JMP@A+DPTR;(A)+(DPTR)→(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值
[2].条件转移指令(8条)
JZrel;A=0,(PC)+2+rel→(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行
JNZrel;A≠0,(PC)+2+rel→(PC),累加器中的内容不为0,则转移到偏移量所指向的地址,否则程序往下执行
CJNEA,data,rel;A≠(data),(PC)+3+rel→(PC),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,否则程序往下执行
CJNEA,#data,rel;A≠#data,(PC)+3+rel→(PC),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNERn,#data,rel;A≠#data,(PC)+3+rel→(PC),工作寄存器Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNE@Ri,#data,rel;A≠#data,(PC)+3+rel→(PC),工作寄存器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
布尔变量操作指令分析
[1].位传送指令(2条)
MOVC,bit;bit→CY,某位数据送CY
MOVbit,C;CY→bit,CY数据送某位
[2].位置位复位指令(4条)
CLRC;0→CY,清CY
CLRbit;0→bit,清某一位
SETBC;1→CY,置位CY
SETBbit;1→bit,置位某一位
[3].位运算指令(6条)
ANLC,bit;(CY)∧(bit)→CY
ANLC,/bit;(CY)∧()→CY
ORLC,bit;(CY)∨(bit)→CY
ORLC,/bit;(CY)∧()→CY
CPLC;()→CY
CPLbit;()→bir
[4].位控制转移指令(5)
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”。