目录表1 寻址方式与相应的寻址空间 (2)1.1数据传送指令MOV (2)1.2程序存储器取数据指令MOVX,MOVC (3)1.3 数据交换指令XCH,XCHD,SWAP (3)1.4 逻辑运算指令ANL,ORL(按位进行) (4)续表1.4 逻辑运算指令XRL CLR CPL RL RLC RR RRC(按位进行) (5)1.5 控制转移指令LJMP AJMP SJMP JMP JZ JNZ CJNE (6)续表1.5 控制转移指令DJNZ LCALL ACALL RET RETI NOP (7)1.6 布尔处理(位操作)指令CLR SETB CPL ANL ORL (8)续表1.6 布尔处理(位操作)指令JC JNC JB JNB JBC (9)1.7堆栈操作指令PUSH POP (10)2.MCS-51系列单片机算术运算指令表ADD ADDC SUBB INC DEC MUL DIV DA (10)表1 寻址方式与相应的寻址空间1.1数据传送指令MOV方式 利用的变量 使用的空间寄存器 R0∽R7,A ,B ,CY ,DPTR直接寻址 direct片内RAM 低128字节特殊功能寄存器SFR寄存器间址 @Ro ,@R1 SP @R0,@R1,@DPTR片内RAM 片外RAM立即数 #data程序存储器 基址加变址 @A+PC @A+DPTR程序存储器 相对寻址 PC+rel程序存储器位寻址bit片内RAM 的20H ∽2FH 部分SFR目的操作数汇编指令机器码功能字节数 机器周期A 累加器 立即数送AMOV A ,#data 74H data data 传至A 2 1 内部RAM 或SFR 内容送AMOV A ,direct E5H direct(direct)传至A2 1 寄存器内容送AMOV A ,Rn (n=0∽7) E8H ∽EFH 11101rrr (Rn)传至A 1 1 内部RAM 内容送A MOV A ,@Ri (i=0,1) 1110011i((Ri))传至A 1 1 Direct内部RAM 或SFR立即数送内部RAM 或SFR MOV direct ,#data 75H direct data data 传至direct 3 2 内部RAM 和SFR 直接直接传送 MOV direct ,direct 85H direct direct (direct)传至direct 3 2 累加器内容送内部RAM 或SFR MOV direct ,AF5H direct(A)传至direct 2 1 寄存器内容送内部RAM 或SFR MOV direct ,Rn (n=0∽7) 10001rrr direct (Rn)传至direct 2 2 内部RAM 内容送内部RAM 或SFRMOV direct ,@Ri (i=0,1) 1000011i direct ((Ri))传至direct 2 2 Rn 寄存器立即数送寄存器 MOV Rn,#data (n=0∽7) 01111rrr data data 传至Rn 2 1 内部RAM 或SFR 内容送寄存器MOV Rn,direct (n=0∽7) 10101rrr direct (direct)传至Rn 2 2 累加器内容送寄存器MOV Rn,A (n=0∽7) 11111rrr (A)传至Rn 1 2 @Ri 内部RAM立即数送内部RAMMOV @Ri,#data (i=0,1) 0111011i data data 传至(Ri) 2 1 内部RAM 或SFR 内容送内部RAMMOV @Ri,direct (i=0,1) 1010011i direct (direct)传至(Ri) 2 2 累加器内容送内部RAM MOV @Ri,A (i=0,1) 1111011i(A)传至(Ri) 1 1 DPTR 16位立即数传送指令MOV DPTR,#data1690H dataH dataLdata16传至DPTR321.2程序存储器取数据指令MOVX ,MOVC1.3 数据交换指令XCH ,XCHD ,SWAP目的操作数汇编指令机器码功能字节数 机器周期A 外部数据存储器内容送A MOVX A ,@Ri (i=0,1) E2H E3H ((Ri))传至A 1 2 A 外部数据存储器内容送A MOVX A ,@DPTR E0H ((DPTR))传至A 1 2 @Ri 累加器内容送外部数据存储器 MOVX @Ri,A (i=0,1) F2H ,F3H A 传至(Ri) 1 2 DPTR 累加器内容送外部数据存储器 MOVX @DPTR,A F0H A 传至(DPTR) 1 2 A 以PC 为基址寄存器加变址寻址 MOVC A,@A+PC 83H ((A)+(PC))传至A 1 2 A以DPTR 为基址寄存器加变址寻址MOVC A,@A+DPTR93H((A)+(DPTR))传至A12目的操作数指令机器码 功能字节数 机器周期 A 内部RAM 或SFR 内容与累加器内容互换 XCH A,directC5H direct (A)←(direct) 2 1 A 寄存器内容与累加器内容互换 XCH A,Rn (n=1-7) 11001rrr (A)←(Rn) 1 1 A 内部RAM 内容与累加器内容互换XCH A,@Ri (i=0,1) 1100011i (A)←((Ri))1 1 A 内部RAM 低4位内容与累加器低4位内容互换XCHD A,@Ri (i=0,1) 1101011i (A)0∽3←((Ri))0∽3 1 1 A累加器高4位与低4位交换SWAP AC4H(A)0∽3←(A)4∽7111.4 逻辑运算指令ANL,ORL(按位进行)目的操作数指令机器码功能字节数机器周期逻辑与ANLA内容∧立即数ANL A ,#data54H A←(A)∧#data 2 1 A内容∧内部RAM或SFR当direct为端口地址P0∽P3时,操作数由端口锁存器读入。
ANL A,direct 55H A←(A)∧(direct) 2 1A内容∧寄存器内容ANL A,Rn(n=0∽7)58H∽5FH A←(A)∧(Rn) 1 1A内容∧内部RAM ANL A,@Ri(i=0,1)56H,57H A←(A)∧((Ri)) 1 1 内部RAM或SFR内容∧A内容当direct为端口地址P0∽P3时,这是一条“读-修改-写”指令,可用累加器A随时修改端口锁存器内容。
ANL direct,A52H direct←(direct)∧(A) 2 1内部RAM或SFR内容∧立即数当direct为端口地址P0∽P3时,这是一条“读-修改-写”指令,可令立即数修改端口锁存器内容。
ANL direct,#data53H direct←(direct)∧#data3 2逻辑或ORLA内容∨立即数ORL A ,#data44H A←(A)∨#data 2 1 A内容∨内部RAM或SFR ORL A,direct 45H A←(A)∨(direct) 2 1 A内容∨寄存器内容ORL A,Rn(n=0∽7)48H∽4FH A←(A)∨(Rn) 1 1A内容∨内部RAM ORL A,@Ri(i=0,1)46H,47H A←(A)∨((Ri)) 1 1 内部RAM或SFR内容∨A内容当direct为端口地址P0∽P3时,则为“读-修改-写”指令。
ORL direct,A42H direct←(direct)∨(A) 2 1内部RAM或SFR内容∨立即数当direct为端口地址P0∽P3时,则为“读-修改-写”指令。
ORL direct,#data43H direct←(direct)∨#data3 2续表1.4 逻辑运算指令XRL CLR CPL RL RLC RR RRC(按位进行)目的操作数指令机器码功能字节数机器周期逻辑异或XRLA内容⊕立即数XRL A ,#data64H A←(A)⊕#data 2 1 A内容⊕内部RAM或SFR XRL A,direct 65H A←(A)⊕(direct) 2 1 A内容⊕寄存器内容XRL A,Rn(n=0∽7)68H∽6FH A←(A)⊕(Rn) 1 1A内容⊕内部RAM XRL A,@Ri(i=0,1)66H,67H A←(A)⊕((Ri)) 1 1 内部RAM或SFR内容⊕A内容当direct为端口地址P0∽P3时,这是一条“读-修改-写”指令。
XRL direct,A62H direct←(direct)⊕(A) 2 1内部RAM或SFR内容⊕立即数当direct为端口地址P0∽P3时,这是一条“读-修改-写”指令。
XRL direct,#data63H direct←(direct)⊕#data3 2累加器A清零CLR A E4H A←00H 1 1 累加器内容按位取反CPL A F4H A←(A的反码) 1 1移位指令A内容循环左移一位RL A 23H 原A7移到A0 1 1 A内容+CY循环左移一位RLC A 33H 1 1A内容循环右移一位RR A03H 1 1A内容+CY循环右移一位RRC A 13H 1 11.5 控制转移指令LJMP AJMP SJMP JMP JZ JNZ CJNE目的操作数指令机器码功能字节数机器周期无条件转移长转移LJMP Addr16 02H Addr16 PC←Addr16 实现程序转移 3 1 绝对转移AJMP Addr11Addr10∽800001,Addr7∽0PC←(PC)+2PC10∽0←Addr10∽0,PC15∽11不变2 1短转移SJMP rel80H rel偏移量PC←(PC)+2+rel 2 1 间接长转移JMP @A+DPTR 73H PC←(A)+(DPTR) 1 11、rel偏移量是一个8位带符号补码数,范围为-128-+127,为正时向前转移,为负则向后转移。
2、JMP指令:累加器A中8位无符号数与DPTR的16位数相加,和送PC,控制程序转移。
指令不改变A和DPTR的内容。
条件转移A为零则转移JZ rel 60H rel PC←(PC)+2若(A)=0,则PC←(PC)+rel。
若(A)≠0,顺序执行2 2A非零则转移JNZ rel 70H rel PC←(PC)+2若(A)≠0,则PC←(PC)+rel。
若(A)=0,顺序执行2 2比较转移A内容与立即数比较CJNE A,#data,rel不相等则转移B4H data rel PC←(PC)+3若(A)>#data,则PC←(PC)+rel,CY=0。
若(A)<#data,则PC←(PC)+rel,CY=1。