单片机指令助记符中英文51单片机汇编指令集2009-04-09 11:00(1)数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVX(Move External RAM)对外部RAM的数据传送;XCH(Exchange)字节交换;XCHD(Exchange low-order Digit)低半字节交换;PUSH(Push onto Stack)入栈;POP (Pop from Stack)出栈;(2)算术运算类指令(8种助记符)ADD(Addition) 加法;ADDC(Add with Carry) 带进位加法;SUBB(Subtract with Borrow) 带借位减法;DA(Decimal Adjust) 十进制调整;INC(Increment) 加1;DEC(Decrement) 减1;MUL(Multiplication、Multiply) 乘法;DIV(Division、Divide) 除法;(3)逻辑运算类指令(10种助记符)ANL(AND Logic) 逻辑与;ORL(OR Logic) 逻辑或;XRL(Exclusive-OR Logic) 逻辑异或;CLR(Clear) 清零;CPL(Complement) 取反;RL(Rotate left) 循环左移;RLC(Rotate Left throught the Carry flag) 带进位循环左移;RR(Rotate Right) 循环右移;RRC(Rotate Right throught the Carry flag) 带进位循环右移;SWAP (Swap)低4位与高4位交换;(4)控制转移类指令(17种助记符)ACALL(Absolute subroutine Call)子程序绝对调用;LCALL(Long subroutine Call)子程序长调用;RET(Return from subroutine)子程序返回;RETI(Return from Interruption)中断返回;SJMP(Short Jump)短转移;AJMP(Absolute Jump)绝对转移;LJMP(Long Jump)长转移;CJNE (Compare Jump if Not Equal)比较不相等则转移;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;JZ (Jump if Zero)结果为0则转移;JNZ (Jump if Not Zero) 结果不为0则转移;JC (Jump if the Carry flag is set)有进位则转移;JNC (Jump if Not Carry)无进位则转移;JB (Jump if the Bit is set)位为1则转移;JNB (Jump if the Bit is Not set) 位为0则转移;JBC(Jump if the Bit is set and Clear the bit) 位为1则转移,并清除该位;NOP (No Operation)空操作;(5)位操作指令(1种助记符)SETB(Set Bit)位置1。
指令格式功能简述字节数周期一、数据传送类指令MOV A, Rn 寄存器送累加器1 1MOV Rn,A 累加器送寄存器1 1MOV A ,@Ri 内部RAM单元送累加器1 1MOV @Ri ,A 累加器送内部RAM单元1 1MOV A ,#data 立即数送累加器2 1MOV A ,direct 直接寻址单元送累加器2 1MOV direct ,A 累加器送直接寻址单元2 1MOV Rn,#data 立即数送寄存器2 1MOV direct ,#data 立即数送直接寻址单元3 2MOV @Ri ,#data 立即数送内部RAM单元2 1MOV direct ,Rn 寄存器送直接寻址单元2 2MOV Rn ,direct 直接寻址单元送寄存器2 2MOV direct ,@Ri 内部RAM单元送直接寻址单元2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元3 2 MOV DPTR ,#data16 16位立即数送数据指针3 2MOVX 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 2XCH A ,@Ri 累加器与内部RAM单元交换1 1XCHD A ,direct 累加器与直接寻址单元交换2 1 XCHD A ,@Ri 累加器与内部RAM单元低4位交换1 1 SWAP A 累加器高4位与低4位交换1 1POP direct 栈顶弹出指令直接寻址单元2 2PUSH direct 直接寻址单元压入栈顶2 2二、算术运算类指令ADD A, Rn 累加器加寄存器1 1ADD A, @Ri 累加器加内部RAM单元1 1ADD A, direct 累加器加直接寻址单元2 1ADD A, #data 累加器加立即数2 1ADDC A, Rn 累加器加寄存器和进位标志1 1ADDC A, @Ri 累加器加内部RAM单元和进位标志1 1 ADDC A, #data 累加器加立即数和进位标志2 1 ADDC A, direct 累加器加直接寻址单元和进位标志2 1 INC A 累加器加1 1 1INC Rn 寄存器加1 1 1INC direct 直接寻址单元加1 2 1INC @Ri 内部RAM单元加1 1 1INC DPTR 数据指针加1 1 2DA A 十进制调整1 1SUBB A, Rn 累加器减寄存器和进位标志1 1SUBB A, @Ri 累加器减内部RAM单元和进位标志1 1 SUBB A, #data 累加器减立即数和进位标志2 1 SUBB A, direct 累加器减直接寻址单元和进位标志2 1 DEC A 累加器减1 1 1DEC Rn 寄存器减1 1 1DEC @Ri 内部RAM单元减1 1 1DEC direct 直接寻址单元减1 2 1MUL AB 累加器乘寄存器B 1 4DIV AB 累加器除以寄存器B 1 4三、逻辑运算类指令ANL A, Rn 累加器与寄存器1 1ANL A, @Ri 累加器与内部RAM单元1 1ANL A, #data 累加器与立即数2 1ANL A, direct 累加器与直接寻址单元2 1ANL direct, A 直接寻址单元与累加器2 1ANL direct, #data 直接寻址单元与立即数3 1ORL A, Rn 累加器或寄存器1 1ORL A,@Ri 累加器或内部RAM单元1 1ORL A,#data 累加器或立即数2 1ORL A,direct 累加器或直接寻址单元2 1ORL direct, A 直接寻址单元或累加器2 1ORL direct, #data 直接寻址单元或立即数3 1XRL A,@Ri 累加器异或内部RAM单元1 1XRL A,#data 累加器异或立即数2 1XRL A,direct 累加器异或直接寻址单元2 1XRL direct, A 直接寻址单元异或累加器2 1XRL direct, #data 直接寻址单元异或立即数3 2RL A 累加器左循环移位1 1RLC A 累加器连进位标志左循环移位1 1RR A 累加器右循环移位1 1RRC A 累加器连进位标志右循环移位1 1CPL A 累加器取反1 1CLR A 累加器清零1 1四、控制转移类指令类ACCALL addr11 2KB范围内绝对调用2 2AJMP addr11 2KB范围内绝对转移2 2LCALL addr16 2KB范围内长调用3 2LJMP addr16 2KB范围内长转移3 2SJMP rel 相对短转移2 2JMP @A+DPTR 相对长转移1 2RET 子程序返回1 2RET1 中断返回1 2JZ rel 累加器为零转移2 2JNZ rel 累加器非零转移2 2CJNE 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 2DJNZ direct ,rel 直接寻址单元减1不为零转移3 2 NOP 空操作1 1五、布尔操作类指令MOV C, bit 直接寻址位送C 2 1MOV bit, C C送直接寻址位2 1CLR C C清零1 1CLR bit 直接寻址位清零2 1CPL C C取反1 1CPL bit 直接寻址位取反2 1SETB C C置位1 1SETB bit 直接寻址位置位2 1ANL C, bit C逻辑与直接寻址位2 2ANL C, /bit C逻辑与直接寻址位的反2 2ORL C, bit C逻辑或直接寻址位2 2ORL C, /bit C逻辑或直接寻址位的反2 2JC rel C为1转移2 2JNC rel C为零转移2 2JB bit,rel 直接寻址位为1转移3 2JNB bit,rel 直接寻址为0转移1.通用数据传送指令.MOV----> moveMOVSX---->extended move with sign data MOVZX---->extended move with zero data PUSH---->pushPOP---->popPUSHA---->push allPOPA---->pop allPUSHAD---->push all dataPOPAD---->pop all dataBSWAP---->byte swapXCHG---->exchangeCMPXCHG---->compare and change XADD---->exchange and addXLAT---->translate2.输入输出端口传送指令.IN---->inputOUT---->output3.目的地址传送指令.LEA---->load effective addressLDS---->load DSLES---->load ESLFS---->load FSLGS---->load GSLSS---->load SS4.标志传送指令.LAHF---->load AH from flagSAHF---->save AH to flagPUSHF---->push flagPOPF---->pop flagPUSHD---->push dflagPOPD---->pop dflag二、算术运算指令ADD---->addADC---->add with carryINC---->increase 1AAA---->ascii add with adjustDAA---->decimal add with adjustSUB---->substractSBB---->substract with borrowDEC---->decrease 1NEC---->negativeCMP---->compareAAS---->ascii adjust on substractDAS---->decimal adjust on substractMUL---->multiplicationIMUL---->integer multiplicationAAM---->ascii adjust on multiplicationDIV---->divideIDIV---->integer divideAAD---->ascii adjust on divideCBW---->change byte to wordCWD---->change word to double wordCWDE---->change word to double word with sign toEAXCDQ---->change double word to quadrate word三、逻辑运算指令───────────────────────────────────────AND---->andOR---->orXOR---->xorNOT---->notTEST---->testSHL---->shift leftSAL---->arithmatic shift leftSHR---->shift rightSAR---->arithmatic shift rightROL---->rotate leftROR---->rotate rightRCL---->rotate left with carryRCR---->rotate right with carry四、串指令───────────────────────────────────────MOVS---->move stringCMPS---->compare stringSCAS---->scan stringLODS---->load stringSTOS---->store stringREP---->repeatREPE---->repeat when equalREPZ---->repeat when zero flagREPNE---->repeat when not equalREPNZ---->repeat when zero flagREPC---->repeat when carry flagREPNC---->repeat when not carry flag五、程序转移指令───────────────────────────────────────1>无条件转移指令(长转移)JMP---->jumpCALL---->callRET---->returnRETF---->return far2>条件转移指令(短转移,-128到+127的距离内) JAE---->jump when above or equalJNB---->jump when not belowJB---->jump when belowJNAE---->jump when not above or equalJBE---->jump when below or equalJNA---->jump when not aboveJG---->jump when greaterJNLE---->jump when not less or equalJGE---->jump when greater or equalJNL---->jump when not lessJL---->jump when lessJNGE---->jump when not greater or equalJLE---->jump when less or equalJNG---->jump when not greaterJE---->jump when equalJZ---->jump when has zero flagJNE---->jump when not equalJNZ---->jump when not has zero flagJC---->jump when has carry flagJNC---->jump when not has carry flagJNO---->jump when not has overflow flagJNP---->jump when not has parity flagJPO---->jump when parity flag is oddJNS---->jump when not has sign flagJO---->jump when has overflow flagJP---->jump when has parity flagJPE---->jump when parity flag is evenJS---->jump when has sign flag3>循环控制指令(短转移)LOOP---->loopLOOPE---->loop equalLOOPZ---->loop zeroLOOPNE---->loop not equalLOOPNZ---->loop not zeroJCXZ---->jump when CX is zeroJECXZ---->jump when ECX is zero4>中断指令INT---->interruptINTO---->overflow interruptIRET---->interrupt return5>处理器控制指令HLT---->haltWAIT---->waitESC---->escapeLOCK---->lockNOP---->no operationSTC---->set carryCLC---->clear carryCMC---->carry make changeSTD---->set directionCLD---->clear directionSTI---->set interruptCLI---->clear interrupt六、伪指令─────────────────────────────────────DW---->definw wordPROC---->procedureENDP---->end of procedureSEGMENT---->segmentASSUME---->assumeENDS---->end segmentEND---->end增量INC-Incremect 减量DNC-Decrement 短转移SJMP-Short jump 长转移LJMP-Long jump 比较转移CJNE-Compare jump not equality 绝对转移AJMP-Absolute jump 空操作NOP-No operation 交换XCH-Exchange 加法ADD-Addition 乘法MUL-Multiplication除法DIV-Division 左环移RL-Rotate left 进位左环移RLC-Rotate left carry 右环移RR-Rotate right 进位右环移RRC-Rotate right carry参考:/question/39663944.html?si=8自己想也想出来了,还用问吗?自己去想,印象会更深。