您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 模板/表格 > (完整版)51单片机汇编指令(全)
第1页共6页指令中常用符号说明Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7)Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1)Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址#data表示8位常数(立即数)#data16表示16位常数Add16表示16位地址Addr11表示11位地址Rel8位代符号的地址偏移量Bit表示位地址@间接寻址寄存器或基址寄存器的前缀()表示括号中单元的内容(())表示间接寻址的内容指令系统数据传送指令(8个助记符)助记符中英文注释MOVMove移动MOVA,Rn;Rn→A,寄存器Rn的内容送到累加器AMOVA,Direct;(direct)→A,直接地址的内容送AMOVA,@Ri;(Ri)→A,RI间址的内容送AMOVA,#data;data→A,立即数送AMOVRn,A;A→Rn,累加器A的内容送寄存器RnMOVRn,direct;(direct)→Rn,直接地址中的内容送RnMOVRn,#data;data→Rn,立即数送RnMOVdirect,A;A→(direct),累加器A中的内容送直接地址中MOVdirect,Rn;(Rn)→direct,寄存器的内容送到直接地址MOVdirect,direct;(direct)→direct,直接地址的内容送到直接地址MOVdirect,@Ri;((Ri))→direct,间址的内容送到直接地址MOVdirect,#data;8位立即数送到直接地址中MOV@Ri,A;(A)→@Ri,累加器的内容送到间址中MOV@Ri,direct;direct→@Ri,直接地址中的内容送到间址中MOV@Ri,#data;data→@Ri,8位立即数送到间址中MOVDPTR,#data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令)(MOV类指令共16条)第2页共6页MOVCMoveCod查表指令MOVCA,@A+PC;PC+1→PC,(A+PC)→AMOVCA,@A+DPTR;(A+DPTR)→A(MOVC类指令共两条)MOVXMoveExternal与外部数据寄存区传送数据MOVXA,@DPTR;(DPTR)→A,DPTR间址单元内容送AMOVX@DPTR,A;A→(DPTR),A中内容送入DPTR间址单元MOVXA,@Ri;(Ri)→A,Ri间址单元内容送AMOVX@Ri,A;A→(Ri),A中内容送Ri间址单元(MOVX类指令4条)XCHExchange交换指令XCHA,Rn;RnA,Rn的内容与A的内容交换XCHA,Direct;DirectA,直接地址的内容与A的内容交换XCHA,@Ri;(Ri)A,间址的内容与A的内容交换XCHDExchangeDecimal十进制交换XCHDA,@Ri;(Ri.3~Ri.0)A.3~A.0,间址内容低四位与A中内容低四位交换SWAPSwap交换SWAPA;A.3~A.0A.7~A.4,A中低四位与高四位内容交换PUSHPush入栈PUSHdirect;SP+1SP,(direct)(SP);直接地址内容压入堆栈顶POPPop出栈POPdirect;(SP)(direct),SP-1SP;堆栈内容弹出到直接地址算术运算类指令(7个助记符)ADDAdd加法运算ADDA,Rn;A+RnA,A与Rn的内容相加,结果送到A中ADDA,direct;(direct)+AA,A与直接地址的内容相加,结果送到A中ADDA,@Ri;((Ri))+AA,A与间址中的内容相加,结果送到A中ADDA,#data;data+AA,A与立即数相加,和送入AADDCADDwithCarry带进位加法ADDCA,Rn;A+Rn+CYA,A与Rn的内容、进位状态相加,结果送到A中ADDCA,direct;(direct)+A+CYA,A与直接地址的内容、进位状态相加,结果送到A中ADDCA,@Ri;((Ri))+A+CYA,A与间址中的内容、进位状态相加,结果送到A中ADDCA,#data;data+A+CYA,A与立即数、进位状态相加,和送入ASUBBSubbtractwithBorrow带进位减法SUBBA,Rn;A-Rn-CYA,A减寄存器Rn的内容及进位标志,结果送ASUBBA,direct;A-(direct)-CYA,A直接地址的内容及进位标志,结果送ASUBBA,@Ri;A-((Ri))-CYA,A间址的内容及进位标志,结果送ASUBBA,#data;A-data-CYA,A立即数及进位标志,结果送AMULMultiply乘法指令MULAB;AxBB和A,结果16位,高8位存入B,低8位存入A;若结果大于FFH,则将溢出标志OV置1第3页共6页DIVDivide除法指令DIVAB;A÷B商→A,余数→B;若除数为0,结果不确定,则将溢出标志OV置1INCIncrement加1指令INCA;A+1A,A加1,结果放在AINCRn;Rn+1Rn,Rn加1,结果放在RnINCdirect;(direct)+1direct,直接地址的内容加1,结果放在该地址中INC@Ri;((Ri))+1(Ri),间址中的内容加1,结果放在该间址中INCDPTR;(DPTR)+1DPTR,数据指针内容加1,结果放在数据指针寄存器(DPTR)中DECDecrement减1指令INCA;A-1A,A减1,结果放在AINCRn;Rn-1Rn,Rn减1,结果放在RnINCdirect;(direct)-1direct,直接地址的内容减1,结果放在该地址中INC@Ri;((Ri))-1(Ri),间址中的内容减1,结果放在该间址中DADecimalAdjust十进制加法调整指令DAA;在加法指令后,把A中二进制码自动调整为BCD码;DAA只能更跟在ADD或ADDC加法指令后,不适用于减法逻辑运算指令(9个助记符)ANLLogicalAnd逻辑与运算ANLA,Rn;(A)与(Rn)→A,A的内容与Rn中的内容相与,结果放在A中ANLA,direct;(A)与(direct)→A,A的内容与直接地址中的内容相与,结果放在A中ANLA,@Ri;(A)与((Ri))→A,A的内容与间址的内容相与,结果放在A中ANLA,#data;(A)与(data)→A,A的内容与立即数相与,结果放在A中ANLdirect,A;(direct)与(A)→direct,直接地址中的内容相与A的内容相与,结果放在直接地址中ANLdirect,#data;(direct)与#data→direct,直接地址中的内容相与立即数相与,结果放在直接地址中ORLLogicalOR逻辑或运算ORLA,Rn;(A)或(Rn)→A,A的内容与Rn中的内容相或,结果放在A中ORLA,direct;(A)或(direct)→A,A的内容与直接地址中的内容相或,结果放在A中ORLA,@Ri;(A)或((Ri))→A,A的内容与间址的内容相或,结果放在A中ORLA,#data;(A)或(data)→A,A的内容与立即数相或,结果放在A中ORLdirect,A;(direct)或A)→direct,直接地址中的内容相与A的内容相或,结果放在直接地址中ORLdirect,#data;(direct)或#data→direct,直接地址中的内容相与立即数相或,结果放在直接地址中XRLLogicalexclusiveor逻辑异或运算ORLA,Rn;(A)异或(Rn)→A,A的内容与Rn中的内容相异或,结果放在A中ORLA,direct;(A)异或(direct)→A,A的内容与直接地址中的内容相异或,结果放在A中ORLA,@Ri;(A)异或((Ri))→A,A的内容与间址的内容相异或,结果放在A中ORLA,#data;(A)异或(data)→A,A的内容与立即数相异或,结果放在A中ORLdirect,A;(direct)或A)→direct,直接地址中的内容相与A的内容相异或,结果放在直接地址中ORLdirect,#data;(direct)异或#data→direct,直接地址中的内容相与立即数相异或,结果放在直接地址第4页共6页RLRotateLeft循环左移指令RLA;每执行一次,A中的内容左移一位RRRotateRight循环右移指令RRA;每执行一次,A中的内容右移一位RLCRotateLeftwiththeCarryflag带进位循环左移指令RLCA;每执行一次,CY和A中的内容左移一位RRCRotateRightwiththeCarryflag带进位循环又移指令RRCA;每执行一次,CY和A中的内容右移一位注意:循环移位指令只能对A中的内容进行移位操作CPLComplement取反指令(求补指令)CPLA;累加器内容按位取反,0变1,1变0CLRClear清零指令CLRA;累加器清零(A各位全变为0)控制转移指令(9个助记符)LJMPLongJump长跳转指令LJMPadd16;add16PC,无条件跳转到add16地址,可在64KB范围内转移AJMPAbsoluteJump绝对跳转指令AJMPadd11;add11PC,无条件跳转到add11地址,可在2KB范围内转移SJMPShortJump短跳转指令SJMPrel;PC+2+relPC,rel是偏移量,8位有符号数(-127~127),可向前后跳转±128个地址单元JMPJump跳转指令JMP@A+DPTR;A+DPTRPC,属于散转指令,无条件转向A与DPTR内容相加后形成的新地址JZJumpifaccisZero累加器为零转移JZrel;A=0转向PC+2+relPC,A≠0,顺序执行JNZJumpifaccisNotZero累加器不为零转移JNZrel;A≠0转向PC+2+relPC,A=0,顺序执行CJNECompareandJumpifNotEqual比较不相等则转移CJNEA,direct,rel;A≠(direct)转向PC+3+relPC,否则顺序执行(PC+3PC);(A)(direct)CY=0,(A)(direct)CY=1CJNEA,#data,rel;A≠(data)转向PC+3+relPC,否则顺序执行(PC+3PC);(A)(data)CY=0,(A)(data)CY=1CJNERn,#data,rel;Rn≠(data)转向PC+3+relPC,否则顺序执行(PC+3PC);(Rn)(data)CY=0,(Rn)(data)CY=1CJNE@Ri,#data,rel;((Ri))≠(data)转向PC+3+relPC,否则顺序执行(PC+3PC);((Ri))(data)CY=0,((Ri))(data)CY=1DJNEDecrementandJumpifNotZero减1不为0则转移DJNERn,rel;Rn-1Rn,Rn≠0转向PC+2+relPC,否则顺序执行(PC+2PC)DJNZdirect,rel;(direct-1)direct,direct≠0转向PC+2+relPC,否则顺序执行(PC+2PC)LCALLLongCall长条用指令LCALLaddr16;调用程序入口地址为addr16的之程序第5页共6页ACALLAbsoluteCall短调用ACALLaddr11;调用程序入口地址为addr11的之程序RETReturnRET;放在子程序最后,使程序准确返回到主程序断点处RETIReturnfromInterruptRETI;中断返回指令,能清楚优先级状态NOPNoOperation空操作指令NOP;空操作,产生一个机器周期延时位操作指令MOVMove数据传送指令MOVC,bit;(bit)→C,寻址位的状态送入CMOVbit,C;(
本文标题:(完整版)51单片机汇编指令(全)
链接地址:https://www.777doc.com/doc-6681410 .html