51汇编语言指令集符号定义表符号RnDirect含义R0~R7寄存器n=0~7直接地址,内部数据区的地址RAM(00H~7FH)A,@Ri12.SUBB A,0data13.INC A14.INC Rn15.INC direct16.INC @Ri位C,结果存回累加器21将累加器的值减常数值减借位C,结果存回累加器11将累加器的值加111将寄存器的值加l21将直接地址的内容加111将间接地址的内容加1建议收藏下载本文,以便随时学习!SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0间接地址Ri=R0或R1 8位常数16位常数16位的目标地址11位的目标地址相关地址内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH)17.INC 11数据指针寄存器值加1DPTR说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位18.DEC A19.DEC Rn20.DEC direct21.DEC @Ri22.MUL AB114112111将累加器的值减1将寄存器的值减1将直接地址的内容减1将间接地址的内容减1@Ri#data#data16Addr16Addr11Relbit指令介绍指令1将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器字周节期动作说明算数运算指令1.ADD A,Rn2.ADD A,direct3.ADD A,@Ri4.ADD A,#data5.ADDC A,Rn6.ADDC A,direct7.ADDC A,@Ri8.ADDC A,#data9.SUBB A,Rn10.SUBB A,direct11.SUBB 11将累加器与寄存器的内容相加,结果存回累加器21将累加器与直接地址的内容相加,结果存回累加器11将累加器与间接地址的内容相加,结果存回累加器21将累加器与常数相加,结果存回累加器11将累加器与寄存器的内容及进位C相加,结果存回累加器21将累加器与直接地址的内容及进位C相加,结果存回累加器11将累加器与间接地址的内容及进位C相加,结果存回累加器21将累加器与常数及进位C相加,结果存回累加器11将累加器的值减去寄存器的值减借位C,结果存回累加器21将累加器的值减直接地址的值减借位C,结果存回累加器11将累加器的值减间接地址的值减借说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为023.DIV 1AB4将累加器的值除以B寄存器的值,结果的商存回累加器,余数存回B寄存器说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为024.DA A11将累加器A作十进制调整,若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6若(A) 7-4>9或 (C)=1,则(A) 7-4←(A)7-4+6逻辑运算指令ANL A,RnANL A,directANL A,@RiANL 12121将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器1将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器1将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器1将累加器的值与常数做AND的逻辑判断,A,#dataANL direct,A2结果存回累加器1将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址32将直接地址的内容与常数值做AND的逻辑判断,结果存回该直接地址1将累加器的值与寄存器的值做OR的逻辑判断,结果存回累加器A,#data54.MOV Rn,A55.MOV Rn,direct56.MOV Rn,gdata57.MOV direct,A58.MOV direct,Rn59.MOV direct1, direct260.MOV direct,@Ri61.MOV direct,#data62.MOV @Ri,A63.MOV @Ri,direct64.MOV @Ri,#data65.MOV DPTR,#data1666.MOVC A,@A+DPTR122311将累加器的内容载入寄存器22将直接地址的内容载入寄存器21将常数载入寄存器ANL direct,#dataORL A,Rn132.ORL A,direct33.ORL A,@Ri34.ORL A,#data35.ORL direct,A建议收藏下载本文,以便随时学习!21将累加器的值与直接地址的内容做OR的逻辑判断,结果存回累加器11将累加器的值与间接地址的内容做OR的逻辑判断,结果存回累加器21将累加器的值与常数做OR的逻辑判断,结果存回累加器21将直接地址的内容与累加器的值做OR的逻辑判断,结果存回该直接地址32将直接地址的内容与常数值做OR的逻辑判断,结果存回该直接地址11将累加器的值与寄存器的值做XOR的逻辑判断,结果存回累加器21将累加器的值与直接地址的内容做XOR的逻辑判断,结果存回累加器11将累加器的值与间接地扯的内容做XOR的逻辑判断,结果存回累加器21将累加器的值与常数作XOR的逻辑判断,结果存回累加器21将直接地址的内容与累加器的值做XOR的逻辑判断,结果存回该直接地址32将直接地址的内容与常数的值做XOR的逻辑判断,结果存回该直接地址11清除累加器的值为011将累加器的值反相11将累加器的值左移一位11将累加器含进位C左移一位11将累加器的值右移一位11将累加器含进位C右移一位11将累加器的高4位与低4位的内容交换。(A)3-0←(A)7-411将寄存器的内容载入累加器21将直接地址的内容载入累加器11将间接地址的内容载入累加器21将常数载入累加器67.MOVC A,@A+PC68.MOVX A,@Ri69.MOVX A,@DPTR70.MOVX @Ri,A71.MOVX @DPTR,A72.PUSH direct73.POP direct21将累加器的内容存入直接地址22将寄存器的内容存入直接地址3222321212将直接地址2的内容存入直接地址1将间接地址的内容存入直接地址将常数存入直接地址将累加器的内容存入某间接地址将直接地址的内容存入某间接地址将常数存入某间接地址将16位的常数存入数据指针寄存器(A) ←((A)+(DPTR))累加器的值再加数据指针寄存器的值为其所指定地址,将该地址的内容读入累加器12(PC)←(PC)+1;(A)←((A)+(PC))累加器的值加程序计数器的值作为其所指定地址,将该地址的内容读入累加器111122222222将间接地址所指定外部存储器的内容读入累加器(8位地址)将数据指针所指定外部存储器的内容读入累加器(16位地址)将累加器的内容写入间接地址所指定的外部存储器(8位地址)将累加器的内容写入数据指针所指定的外部存储器(16位地址)将直接地址的内容压入堆栈区从堆栈弹出该直接地址的内容36.ORL direct,#data37.XRL A,Rn38.XRL A,direct39.XRL A,@Ri40.XRL A,#dataXRL direct,A1242.XRL direct,#data43.CLR A44.CPL A45.RL A46.RLC A47.RR A48.RRC A49.SWAP A数据转移指令50.MOV A,Rn51.MOV A,direct52.MOV A,@Ri53.MOV 74.XCH A,Rn75.XCH A,direct76.XCH A,@Ri12111111将累加器的内容与寄存器的内容互换将累加器的值与直接地址的内容互换将累加器的值与间接地址的内容互换99.AJMP addr1122绝对跳跃(2K内)长跳跃(64K内)短跳跃(2K内)-128~+127字节跳至累加器的内容加数据指针所指的相关地址累加器的内容为0,则跳至rel所指相关地址累加器的内容不为0,则跳至rel所指相关地址将累加器的内容与直接地址的内容比较,不相等则跳至rel所指的相关地址将累加器的内容与常数比较,若不相等则跳至rel所指的相关地址将寄存器的内容与常数比较,若不相等则跳至rel所指的相关地址将间接地址的内容与常数比较,若不相等则跳至rel所指的相关地址将寄存器的内容减1,不等于0则跳至rel所指的相关地址将直接地址的内容减1,不等于0则跳至rel所指的相关地址无动作功能介绍 B寄存器 累加器 程序状态字 中断优先级控制寄存器 P3口锁存器 中断允许控制寄存器 P2口锁存器 串行口锁存器 串行口控制寄存器 P1口锁存器 定时器/计数器1(高8位) 定时器/计数器1(低8位) 定时器/计数器0(高8位) 定时器/计数器0(低8位) 定时器/计数器方式控制寄存器 定时器/计数器控制寄存器 数据地址指针(高8位) 数据地址指针(低8位) 100.LJMP 32addr16101.SJMP 22rel102.JMP @A+DPTR12222277.XCHD A,@Ri78.CLR C建议收藏下载本文,以便随时学习!将累加器的低4位与间接地址的低4位互换清除进位C为0清除直接地址的某位为0设定进位C为1设定直接地址的某位为1104.JNZ rel103.JZ rel12121111105.CJNE 32A,direct,rel106.CJNE 32A,#data,relCJNE @Rn, 32#data,relCJNE @Ri, 32#data,rel109.DJNZ 22Rn,rel110.DJNZ 32direct,rel111.NOP符号 BACCPSWIPP3IEP2SBUFSCONP1TH1TH0TL1TL0TMODTCONDPHDPL布尔代数运算79.CLR bit80.SETB C81.SETB bit82.CPL C83.CPL bit84.ANL C,bit85.ANL C,/bit86.ORL C,bit87.ORL C,/bit88.MOV C,bit89.MOV bit,C90.JC rel91.JNC rel92.JB bit,rel93.JNB bit,rel94.JBC bit,rel程序跳跃95.ACALL addr1196.LCALL addr1697.RET98.RETI22321212调用2K程序存储器范围内的子程序调用64K程序存储器范围内的子程序从子程序返回从中断子程序返回11将进位C的值反相21将直接地址的某位值反相22将进位C与直接地址的某位做AND的逻辑判断,结果存回进位C22将进位C与直接地址的某位的反相值做AND的逻辑判断,结果存回进位C22将进位C与直接地址的某位做OR的逻辑判断,结果存回进位C22将进位C与直接地址的某位的反相值做OR的逻辑判断,结果存回进位C21将直接地址的某位值存入进位C22将进位C的值存入直接地址的某位22若进位C=1则跳至rel的相关地址22若进位C=0则跳至rel的相关地址32若直接地址的某位为1,则跳至rel的相关地址32若直接地址的某位为0,则跳至rel的相关地址32若直接地址的某位为1,则跳至rel的相关地址,并将该位值清除为011地址 F0HE0HD0HB8HB0HA8HA0H99H98H90H8DH8CH8BH8AH89A88H83H82HSPP0PCON81H80H87H堆栈指针 P0口锁存器 电源控制寄存器 P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXDTXD建议收藏下载本文,以便随时学习!串行口输入端串行口输出端外部中断0请求输入端,低电平有效外部中断1请求输入端,低电平有效定时器/计数器0计数脉冲输入端定时器/计数器1计数脉冲输入端外部数据存储器写选通信号输出端,低电平有效外部数据存储器读选通信号输出端,低电平有效INT0INT1T0T1WRRD CY(PSW.7)——进位标志位。 AC(PSW.6)——辅助进位(或称半进位)标志。 F0(PSW.5)——由用户定义的标志位。 RS1(PSW.4)、 RS0(PSW.3)——工作寄存器组选择位。 OV(PSW.2)——溢出标志位。 由硬件置位或清零。 PSW.1——未定义位。 P(PSW.0)——奇偶标志位。位寻址区 20H~2FH单元是位寻址区。这16个单元(共计16×8=128位)的每一位都赋予了一个位地址,位地址范围为00H~7FH。位寻址区的每一位都可当作软件触发器,由程序直接进行位处理。通常可以把各种程序状态标志、位控制变量存于位寻址区内。