第七讲 80C51控制转移类指令及位操作指令 091001
- 格式:ppt
- 大小:340.50 KB
- 文档页数:35
80C51指令系统数据传送指令助记符指令功能字节数周期数对标志位影响P OV AC CYMOV A , #data A←DATA 8位立即数送A 2 1 √×××MOV direct ,#data data←Direct 8立即数送直接寻址单元 3 2 ××××MOV @Ri ,#data (Ri)←Data 8位立即数送Ri间接寻址单元 2 1 ××××MOV Rn ,#data Rn←Data 8位立即数送寄存器 2 1 ××××MOV DPTR ,#data16 DPTR←Data16 16位立即数送DPTR高8位送DPH,低8位DPL3 2 ××××MOV direct2,direct1 Direct2←(direct1) 直接寻址单元送直接寻址单元 3 2 ××××MOV direct ,@Ri direct←((Ri)) 间接寻址数据送直接单元 2 2 ××××MOV direct ,Rn direct←(Rn) 寄存器内容送直接寻址单元 2 2 ××××MOV @Ri ,direct (Ri)←(direct) 直接寻址数据送Ri间接寻址单元 2 2 ××××MOV Rn ,direct Rn←(direct) 直接寻址数据送寄存器 2 2 ××××MOV A ,direct A←(direct) 直接寻址数据送累加器 2 1 ××××MOV A ,@Ri A←((Ri)) Ri间接寻址数据送累加器 1 1 ××××MOV A ,Rn A←(Rn) 寄存器类容送累加器 1 1 ××××MOV direct ,A direct←(A) 累加器内容送直接寻址单元 2 1 ××××MOV @Ri ,A (Ri)←(A) 累加器内容送Ri间接寻址单元 1 1 ××××MOV Rn ,A Rn←(A) 累加器内容送寄存器 1 1 ××××MOVX A ,@Ri A←((Ri)) Ri间接寻址的外部RAM单元读 1 2 ××××MOVX @Ri ,A (Ri)←(A) Ri间接寻址的外部RAM单元写 1 2 ××××MOVX A ,@DPTR A←((DPTR)) DPTR间接寻址的外部RAM单元读 1 2 ××××MOVX @DPTR ,A (DPTR)←(A) DPTR间接寻址的外部RAM单元写 1 2 ××××X代表外部,外部数据存储器读/写只能通过累加器A使用间接寻址方式进行,间接寄存器可是Ri或DPTR MOVC A ,@A+DPTR A←((A)+(DPTR)) 程序存储器读 1 2 √×××MOVC A ,@A+PC A←((A)+(PC)) 程序存储器读 1 2 √×××程序存储器只能读,不能写,包括内部存储器及外部存储器,通过累加器A进行XCH A ,Rn (A)⇔(Rn) 寄存器寻址字节交换 1 1 √×××XCH A ,direct (direct) ⇔(A) 直接寻址字节交换 2 1 √×××XCH A ,@Ri ((Ri)) ⇔(A) Ri间接寻址字节交换 1 1 √×××XCHD A ,@Ri ((Ri))3~0⇔(A)3~0 Ri间接寻址低半字节交换 1 1 √×××SWAP A (A)3~0⇔(A)7~4 累加器内容高低半字节交换 1 1 ××××PUSH direct SP←(SP)+1 , (SP)←(direct) 进栈 2 2 ××××POP direct direct←((SP)) , SP←(SP)-1 出栈 2 2 ××××进出栈只能写为“PUSH ACC”和“POP ACC”,不能用“A”算术运算类指令算术运算指令都按8位二进制无符号数执行助记符指令功能字节数周期数对标志位影响P OV AC CYADD A ,#data A←(A)+data 立即数加法 2 1 √√√√ADD A ,direct A←(A)+(direct) 直接寻址加法 2 1 √√√√ADD A ,@Ri A←(A)+((Ri)) 间接寻址加法 1 1 √√√√ADD A ,Rn A←(A)+(Rn) 寄存器寻址加法 1 1 √√√√ADDC A ,#data A←(A)+data+(CY) 立即数带进位加法 1 1 √√√√ADDC A ,direct A←(A)+(direct)+(CY) 直接寻址带进位加法 2 1 √√√√ADDC A ,@Ri A←((Ri))+(A)+(CY) 间接寻址带进位加法 1 1 √√√√ADDC A ,Rn A←(Rn)+(A)+(CY) 寄存器寻址带进位加法 1 1 √√√√SUBB A ,#data A←(A)-data-(CY) 立即数带借位减法 2 1 √√√√SUBB A ,direct A←(A)-(direct)-(CY) 直接寻址带借位减法 2 1 √√√√SUBB A ,@Ri A←(A)-((Ri))-(CY) 间接寻址带借位减法 1 1 √√√√SUBB A ,Rn A←(A)-(Rn)-(CY) 寄存器寻址带借位减法 1 1 √√√√INC A A←(A)+1 累加器加1 1 1 √√××INC direct direct←(direct)+1 直接寻址单元加1 2 1 ××××INC @Ri (Ri) ←((Ri))+1 间接寻址单元加1 1 1 ××××INC Rn Rn←(Rn)+1 寄存器加1 1 1 ××××INC DPTR DPTR←(DPTR)+1 16位数据指针加1 1 2 ××××DEC A A←(A)-1 累加器减1 1 1 √×××DEC direct direct←(direct)-1 直接寻址单元减1 2 1 ××××DEC @Ri (Ri) ←((Ri))-1 间接寻址单元减1 1 1 ××××DEC Rn Rn←(Rn)-1 寄存器减1 1 1 ××××MUL AB AB←(A)*(B) 乘法 1 4 √√×√乘法:CY总是被清0,OV与乘积有关。
控制转移类指令和位操作指令(一).控制转移类指令计算机运行过程中,有时因为操作的需要,程序不能按顺序逐条执行指令,需要改变程序运行方向,即将程序跳转到某个指定的地址再顺序执行下去。
控制转移类指令的功能就是根据要求修改程序计数器PC的内容,以改变程序运行方向,实现转移。
控制转移类指令可分为:无条件转移、条件转移、绝对转移、相对转移和调用、返回指令。
下面我们将分类介绍。
1.无条件转移指令(4条)LJMP add16 ;add16→PC,无条件跳转到add16地址,可在64KB范围内转移,称为长转移指令AJMP add11 ;add11→PC,无条件转向add11地址,在2KB范围内转移SJMP rel ;PC+2+rel→PC,相对转移,rel是偏移量,8 位有符号数,范围-128~127,即可向后跳转128,向前可跳转127JMP @A+DPTR ;A+DPTR→PC ,属散转指令,无条件转向A与DPTR内容相加后形成的新地址例执行指令LJMP 9100H不管这条指令存放在哪里,执行时将使程序转移到9100H,和AJMP,SJMP指令是有差别的。
例程序2000H MOV R0 , #10H ;10H→PC2002H SJMP 03H ;PC+2+rel=2002H+2+03H=2007H→PC┇┇2006H ┇2007H ┇从说明中可见,执行SJMP 03H 指令后,马上跳转到2007H地址执行程序。
2.条件转移指令(8条)条件转移指令是根据某种特定条件转移的指令。
条件满足时转移,条件不满足时则顺序执行下面的指令。
JZ rel ;A=0转向PC+2+rel→PC,A≠0顺序执行JNZ rel ;A≠转向PC+2+rel→PC ,A=0顺序执行CJNE A, direct, rel ;A≠ (direct)转向PC+3+rel→PC且当A>(direct),Cy=0;当A<(direct),Cy=1;否则A=(direct),PC+3→PC即顺序执行CJNE A, #data, rel ;A data P转向PC+3+rel→PC且当A >data,Cy=0;当A <data,Cy=1,;A=data,PC+3→PC顺序执行CJNZ Rn, #data, rel ;Rn≠data转向PC+3+rel→PC;且当Rn>data,Cy=0,当Rn<data,Cy=1;Rn=data,PC+3→PC顺序执行CJNE @Ri,#data, rel ;(Ri) ≠data ,PC+3+rel→PC;且当(Ri)>data ,Cy=0,当(Ri)<data,Cy=1;(Ri)=data, PC+3→PC顺序执行DJNZ Rn, rel ;Rn-1→Rn ,Rn ≠0转向PC+2+rel→PC;Rn=0,PC+2→PC顺序执行DJNZ direct, rel ;(direct)-1→(direct),(direct) ≠0转向 PC+2+rel→PC;(direct)=0 ,PC+2→PC顺序执行注意:1)CJNE类指令借用进位标志Cy作为比较结果的标志位。
80C51指令表一、数据传送指令MOV A,Rn ; (Rn)→AMOV A,direct ; (direct)→AMOV A,@Ri ; ((Ri))→AMOV A,#data ; #data→AMOV Rn,A ; (A)→ RnMOV Rn,direct ; (direct)→ RnMOV Rn,#data ; #data→ RnMOV direct,A ; (A)→directMOV direct,Rn ; (Rn)→directMOV direct1,direct2 ; (direct1)→direct2MOV direct,@Ri ; ((Ri))→directMOV direct,#data ; #data→directMOV @Ri,A ; ((Ri))→AMOV @Ri,direct ; (direct)→(Ri)MOV @Ri,#data ; #data→ ((Ri))MOV DPTR,#data16 ; dataH→ DPH,data → LDPL MOVX A,@DPTR ; ((DPTR))→AMOVX @DPTR,A ; (A)→(DPTR)MOVX A,@Ri ; ((Ri))→AMOVX @Ri,A ;(A) →(Ri)MOVC A,@A+PC ; (PC)+1→PC,((A)+(PC))→ A MOVC A,@A+DPTR ; (A)+(DPTR)→APUSH direct ; (SP)+1 → SP,(direct) → (SP) POP direct ;((SP)) → (direct), (SP)-1 → SP XCH A,Rn ; (A) ←→(Rn)XCH A,direct ; (A) ←→(direct)XCH A,@Ri ; (A) ←→((Ri))XCHD A,@Ri ; (A)0~3 ←→((Ri))0~3SWAP A ; (A)0~3 ←→(A)4~7二、算术运算指令ADD A,Rn ; (A) + (Rn)→ AADD A,direct ; (A) + (direct)→ AADD A,@Ri ; (A) + ((Ri))→ AADD A,#data ; (A) + #data→ AADDC A,Rn ; (A) + (Rn) + cy→ AADDC A,direct ; (A) + (direct) + cy→ AADDC A,@Ri ; (A) + ((Ri)) + cy→ AADDC A,#data ; (A) + # data + cy→ ASUBB A,Rn ; (A) - ( Rn) - cy→ ASUBB A,direct ; (A) - (direct) - cy→ ASUBB A,@Ri ; (A) - ((Ri)) - cy→ ASUBB A,#data ; (A) - # data - cy→ AINC A ; (A) + 1 → AINC Rn ; (Rn) + 1 →RnINC direct ; (direct) + 1 →directINC @Ri ; ((Ri)) + 1 → (Ri)INC DPTR ; (DPTR) + 1 → DPTRDEC A ; (A) - 1 → ADEC Rn ; (Rn) - 1 →RnDEC direct ; (direct) - 1 →directDEC @Ri ; ((Ri)) - 1 → (Ri)MUL AB ; (A)·(B) → ABDIV AB ; (A) / (B) 商→ A , 余数→ B DA A ; 对A进行十进制调整三、逻辑操作指令ANL A,Rn ; (A)∧(Rn) → AANL A,direct ; (A)∧(direct) →AANL A,@Ri ; (A)∧((Ri)) → AANL A,#data ; (A)∧#data → AANL direct,A ; (direct)∧(A) →directANL direct,#data ; (direct)∧#data →directORL A,Rn ; (A)∨(Rn) → AORL A,direct ; (A)∨(direct) → AORL A,@Ri ; (A)∨((Ri)) → AORL A,#data ; (A)∨#data → AORL direct,A ; (direct)∨(A) →directORL direct,#data ; (direct)∨#data →directXRL A,Rn ; (A)⊕(Rn) → AXRL A,direct ; (A)⊕(direct) → AXRL A,@Ri ; (A)⊕((Ri)) → AXRL A,#data ; (A)⊕#data → AXRL direct,A ; (direct)⊕(A) →directXRL direct,#data ; (direct)⊕#data →directCLR A ; 0 → ACPL A ; (A) → ARL A ; (A)循环左移1位RLC A ; (A)带进位循环左移1位RR A ; (A)循环右移1位RRC A ; (A)带进位循环右移1位SWAP A ;(A)半字节交换四、位操作指令CLR C ; 0 → cyCLR bit ; 0 → bitSETB C ; 1 → cySETB bit ; 1 → bitCPL C ; (cy) → cyCPL bit ; (bit) → bitANL C,bit ; (cy) ∧(bit) → cyANL C,/bit ; (cy) ∧(bit) → cyORL C,bit ; (cy) ∨(bit) → cyORL C,/bit ; (cy) ∨(bit) → cyMOV C,bit ; (bit) → cyMOV bit,C ; (cy) → bit五、控制转移指令ACALL addr11 ; (PC)+2 → PC , (SP)+1 → SP;(PCL) → (SP),(SP)+1 → SP;(PCH) → (SP),addr11 → PC10~0 LCALL addr16 ; (PC)+3 → PC , (SP)+1 → SP;(PCL) → (SP),(SP)+1 → SP;(PCH) → (SP),addr16 → PCRET ; (SP) → PCH,(SP) -1 → SP;(SP) → PCL,(SP) -1 → SPRETI ; (SP) → PCH,(SP) -1 → SP;(SP) → PCL,(SP) -1 → SPAJMP add11 ; (PC)+2 → PC,;addr11 → CP10~0 LJMP add16 ; addr16 → PCSJMP rel ; (PC)+2 → PC,(PC)+ rel → PC JMP @A+DPTR ; ((A)+(DPTR))→ PCJZ rel ; (A)=0 : (PC)+2 +rel =PC; (A)≠0 : (PC)+2 =PCJNZ rel ; (A)≠0 : (PC)+2 +rel =PC; (A)=0 : (PC)+2 =PCJC rel ; (C)=1 : (PC)+2+rel =PC; (C)=0 : (PC)+2 =PCJNC rel ; (C)=0 : (PC)+2+rel =PC; (C)=1 : (PC)+2 =PCJB bit,rel ; (bit)=1 : 则(PC)+3+rel =PC; (bit)=0 : 则(PC)+3 =PCJNB bit,rel ; (bit)=0 : 则(PC)+3+rel =PC; (bit)=1 : 则(PC)+3 =PCJBC bit,rel ; (bit)=1 : 则(PC)+3+rel =PC, 0 → bit; (bit)=0 : 则(PC)+3 =PCCJNE A,direct,rel ; (A) = (direct), 则(PC)+3 → PC; (A) > (direct), 则(PC)+3+rel → PC,0 → CY; (A) < (direct), 则(PC)+3+rel → PC,1 → CY CJNE A,#data,rel ; (A) = #data, 则(PC)+3 → PC; (A) > #data, 则(PC)+3+rel → PC,0 → CY; (A) < #data, 则(PC)+3+rel → PC,1 → CY CJNE Rn,#data,rel ; (Rn) = #ata , 则(PC)+3 → PC; (Rn) > #ata, 则(PC)+3+rel → PC,0 → CY; (Rn) < #ata, 则(PC)+3+rel → PC,1 → CY CJNE @Ri,#data,rel ; ((Rn)) = #data, 则(PC)+3 → PC; ((Rn)) > #ata, 则(PC)+3+rel → PC,0 → CY; ((Rn)) < #ata, 则(PC)+3+rel → PC,1 → CY DJNZ Rn,rel ; (Rn)-1 → Rn,(Rn)=0,则(PC)+2 → PC;(Rn)≠0,则(PC)+2+rel → PCDJNZ direct,rel ; (direct)-1 → (direct),;(direct) ≠0,则(PC)+3+rel → PC;(direct)=0,则(PC)+3 → PCNOP ; 空操作。
1.数据传送指令助记符说明字节周期代码MOV A,Rn 寄存器送A 1 1 E8--EFMOV A,data 直接字节送A 2 1 E5MOV A,@Ri 间接RAM 送A 1 1 E6--E7MOV A,#data 立接数送A 2 1 74MOV Rn,A A 送寄存器 1 1 F8--FFMOV Rn,data 直接数送寄存器 2 2 A8--AFMOV Rn,#data 立即数送寄存器 2 1 78--7FMOV data,A A 送直接字节 2 1 F5MOV data,Rn 寄存器送直接字节 2 1 88—8FMOV data,data 直接字节送直接字节 3 2 85MOV data,@Ri 间接Rn 送直接字节 2 2 86;87MOV data,#data 立即数送直接字节 3 2 75MOV @Ri,A A 送间接Rn 1 2 F6;F7MOV @Ri,data 直接字节送间接Rn 1 1 A6;A7MOV @Ri,#data 立即数送间接Rn 2 2 76;77MOV DPTR,#data16 16 位常数送数据指针 3 1 90MOV C,bit 直接位送进位位 2 1 A2MOV bit,C 进位位送直接位 2 2 92MOVC A,@A+DPTR A+DPTR 寻址程序存贮字节送A 3 2 93 MOVC A,@A+PC A+PC 寻址程序存贮字节送A 1 2 83MOVX A,@Ri 外部数据送A(8 位地址) 1 2 E2;E3MOVX A,@DPTR 外部数据送A(16 位地址) 1 2 E0MOVX @Ri,A A 送外部数据(8 位地址) 1 2 F2;F3MOVX @DPTR,A A 送外部数据(16 位地址) 1 2 F0PUSH data 直接字节进栈道,SP 加1 2 2 C0POP data 直接字节出栈,SP 减1 2 2 D0XCH A,Rn 寄存器与A 交换 1 1 C8—CFXCH A,data 直接字节与A 交换 2 1 C5XCH A,@Ri 间接Rn 与A 交换 1 1 C6;C7XCHD A,@Ri 间接Rn 与A 低半字节交换 1 1 D6;D7 2.逻辑运算指令助记符说明字节周期代码ANL A,Rn 寄存器与到A 1 1 58—5FANL A,data 直接字节与到A 2 1 55ANL A,@Ri 间接RAM与到A 1 1 56;57ANL A,#data 立即数与到A 2 1 54ANL data,A A与到直接字节 2 1 52ANL data,#data 立即数与到直接字节 3 2 53ANL C,bit 直接位与到进位位 2 2 82ANL C,/bit 直接位的反码与到进位位 2 2 B0ORL A,Rn 寄存器或到A 1 1 48—4FORL A,data 直接字节或到A 2 1 45ORL A,@Ri 间接RAM或到A 1 1 46;47ORL A,#data 立即数或到A 2 1 44ORL data,A A或到直接字节 2 1 42ORL data,#data 立即数或到直接字节 3 2 43ORL C,bit 直接位或到进位位 2 2 72ORL C,/bit 直接位的反码或到进位位 2 2 A0XRL A,Rn 寄存器异或到A 1 1 68—6FXRL A,data 直接字节异或到A 2 1 65XRL A,@Ri 间接RAM异或到A 1 1 66;67XRL A,#data 立即数异或到A 2 1 64XRL data,A A异或到直接字节 2 1 62XRL data,#data 立即数异或到直接字节 3 2 63SETB C 进位位置1 1 1 D3SETB bit 直接位置1 2 1 D2CLR A A清0 1 1 E4CLR C 进位位清0 1 1 C3CLR bit 直接位清0 2 1 C2CPL A A求反码 1 1 F4CPL C 进位位取反 1 1 B3CPL bit 直接位取反 2 1 B2RL A A循环左移一位 1 1 23RLC A A 带进位左移一位 1 1 33 RR A A右移一位 1 1 03 RRC A A 带进位右移一位 1 1 13SWAP A A 半字节交换 1 1 C43.算术运算指令助记符说明字节周期代码ADD A,Rn 寄存器加到A 1 1 28—2FADD A,data 直接字节加到A 2 1 25ADD A,@Ri 间接RAM 加到A 1 1 26;27ADD A,#data 立即数加到A 2 1 24ADDC A,Rn 寄存器带进位加到A 1 1 38—3FADDC A,data 直接字节带进位加到A 2 1 35ADDC A,@Ri 间接RAM 带进位加到A 1 1 36;37ADDC A,#data 立即数带进位加到A 2 1 34SUBB A,Rn 从A 中减去寄存器和进位 1 1 98—9FSUBB A,data 从A 中减去直接字节和进位 2 1 95SUBB A,@Ri 从A 中减去间接RAM 和进位 1 1 96;97 SUBB A,#data 从A 中减去立即数和进位 2 1 94INC A A加1 1 1 04INC Rn 寄存器加1 1 1 08—0FINC data 直接字节加1 2 1 05INC @Ri 间接RAM 加1 1 1 06;07INC DPTR 数据指针加1 1 2 A3DEC A A减1 1 1 14DEC Rn 寄存器减1 1 1 18—1FDEC data 直接字节减1 2 1 15DEC @Ri 间接RAM 减1 1 1 16;17MUL AB A乘B 1 4 A4DIV AB A被B除 1 4 84DA A A十进制调整 1 1 D43.转移指令助记符说明字节周期代码AJMP addr 11 绝对转移 2 2 *1LJMP addr 16 长转移 3 2 02SJMP rel 短转移 2 2 80 JMP @A+DPTR 相对于DPTR 间接转移 1 2 73JZ rel 若A=0 则转移 2 2 60JNZ rel 若A≠0 则转移 2 2 70JC rel 若C=1 则转移 2 2 40JNC rel 若C≠1 则转移 2 2 50JB bit,rel 若直接位=1 则转移 3 2 20JNB bit,rel 若直接位=0 则转移 3 2 30JBC bit,rel 若直接位=1 则转移且清除 3 2 10CJNE A,data,rel 直接数与A 比较,不等转移 3 2 B5CJNE A,#data,rel 立即数与A 比较,不等转移 3 2 B4CJNE @Ri,#data,rel 立即数与间接RAM 比较,不等转移3 2 B6;B7CJNE Rn,#data,rel 立即数与寄存器比较不等转移 3 2 B8—BFDJNZ Rn,rel 寄存器减1 不为0 转移 2 2 D8—DFDJNZ data,rel 直接字节减1 不为0 转移 3 2 D5ACALL addr 11 绝对子程序调用 2 2 *1LCALL addr 16 子程序调用 3 2 12RET 子程序调用返回 1 2 22RETI 中断程序调用返回 1 2 32NOP 空操作 1 1 00按字母排列1.数据传送指令助记符说明字节周期代码ACALL addr 11 绝对子程序调用 2 2 *1ADD A,Rn 寄存器加到A 1 1 28—2FADD A,data 直接字节加到A 2 1 25ADD A,@Ri 间接RAM 加到A 1 1 26;27ADD A,#data 立即数加到A 2 1 24ADDC A,Rn 寄存器带进位加到A 1 1 38—3FADDC A,data 直接字节带进位加到A 2 1 35ADDC A,@Ri 间接RAM 带进位加到A 1 1 36;37ADDC A,#data 立即数带进位加到A 2 1 34AJMP addr 11 绝对转移 2 2 *1ANL A,Rn 寄存器与到A 1 1 58—5FANL A,data 直接字节与到A 2 1 55 ANL A,@Ri 间接RAM与到A 1 1 56;57 ANL A,#data 立即数与到A 2 1 54ANL data,A A与到直接字节 2 1 52ANL data,#data 立即数与到直接字节 3 2 53ANL C,bit 直接位与到进位位 2 2 82ANL C,/bit 直接位的反码与到进位位 2 2 B0CJNE A,data,rel 直接数与A 比较,不等转移 3 2 B5CJNE A,#data,rel 立即数与A 比较,不等转移 3 2 B4CJNE @Ri,#data,rel 立即数与间接RAM 比较,不等转移3 2 B6;B7 CJNE Rn,#data,rel 立即数与寄存器比较不等转移 3 2 B8—BFCLR A A清0 1 1 E4CLR C 进位位清0 1 1 C3CLR bit 直接位清0 2 1 C2CPL A A求反码 1 1 F4CPL C 进位位取反 1 1 B3CPL bit 直接位取反 2 1 B2DA A A十进制调整 1 1 D4DEC A A减1 1 1 14DEC Rn 寄存器减1 1 1 18—1FDEC data 直接字节减1 2 1 15DEC @Ri 间接RAM 减1 1 1 16;17DIV AB A被B除 1 4 84DJNZ Rn,rel 寄存器减1 不为0 转移 2 2 D8—DFDJNZ data,rel 直接字节减1 不为0 转移 3 2 D5INC A A加1 1 1 04INC Rn 寄存器加1 1 1 08—0FINC data 直接字节加1 2 1 05INC @Ri 间接RAM 加1 1 1 06;07INC DPTR 数据指针加1 1 2 A3JB bit,rel 若直接位=1 则转移 3 2 20JBC bit,rel 若直接位=1 则转移且清除 3 2 10JC rel 若C=1 则转移 2 2 40JMP @A+DPTR 相对于DPTR 间接转移 1 2 73JNB bit,rel 若直接位=0 则转移 3 2 30 JNC rel 若C≠1 则转移 2 2 50 JNZ rel 若A≠0 则转移 2 2 70JZ rel 若A=0 则转移 2 2 60LCALL addr 16 子程序调用 3 2 12LJMP addr 16 长转移 3 2 02MOV A,Rn 寄存器送A 1 1 E8--EFMOV A,data 直接字节送A 2 1 E5MOV A,@Ri 间接RAM 送A 1 1 E6--E7MOV A,#data 立接数送A 2 1 74MOV Rn,A A 送寄存器 1 1 F8--FFMOV Rn,data 直接数送寄存器 2 2 A8--AFMOV Rn,#data 立即数送寄存器 2 1 78--7FMOV data,A A 送直接字节 2 1 F5MOV data,Rn 寄存器送直接字节 2 1 88—8FMOV data,data 直接字节送直接字节 3 2 85MOV data,@Ri 间接Rn 送直接字节 2 2 86;87MOV data,#data 立即数送直接字节 3 2 75MOV @Ri,A A 送间接Rn 1 2 F6;F7MOV @Ri,data 直接字节送间接Rn 1 1 A6;A7MOV @Ri,#data 立即数送间接Rn 2 2 76;77MOV DPTR,#data 16 位常数送数据指针 3 1 90MOV C,bit 直接位送进位位 2 1 A2MOV bit,C 进位位送直接位 2 2 92MOVC A,@A+DPTR A+DPTR 寻址程序存贮字节送A 3 2 93MOVC A,@A+PC A+PC 寻址程序存贮字节送A 1 2 83MOVX A,@Ri 外部数据送A(8 位地址) 1 2 E2;E3MOVX A,@DPTR 外部数据送A(16 位地址) 1 2 E0MOVX @Ri,A A 送外部数据(8 位地址) 1 2 F2;F3MOVX @DPTR,A A 送外部数据(16 位地址) 1 2 F0MUL AB A乘B 1 4 A4NOP 空操作 1 1 00ORL A,Rn 寄存器或到A 1 1 48—4FORL A,data 直接字节或到A 2 1 45ORL A,@Ri 间接RAM或到A 1 1 46;47 ORL A,#data 立即数或到A 2 1 44 ORL data,A A或到直接字节 2 1 42ORL data,#data 立即数或到直接字节 3 2 43ORL C,bit 直接位或到进位位 2 2 72ORL C,/bit 直接位的反码或到进位位 2 2 A0POP data 直接字节出栈,SP 减1 2 2 D0PUSH data 直接字节进栈道,SP 加1 2 2 C0RET 子程序调用返回 1 2 22RETI 中断程序调用返回 1 2 32RL A A循环左移一位 1 1 23RLC A A 带进位左移一位 1 1 33RR A A右移一位 1 1 03RRC A A 带进位右移一位 1 1 13SETB C 进位位置1 1 1 D3SETB bit 直接位置1 2 1 D2SJMP rel 短转移 2 2 80SUBB A,Rn 从A 中减去寄存器和进位 1 1 98—9FSUBB A,data 从A 中减去直接字节和进位 2 1 95SUBB A,@Ri 从A 中减去间接RAM 和进位 1 1 96;97SUBB A,#data 从A 中减去立即数和进位 2 1 94SWAP A A 半字节交换 1 1 C4XCH A,Rn 寄存器与A 交换 1 1 C8—CFXCH A,data 直接字节与A 交换 2 1 C5XCH A,@Ri 间接Rn 与A 交换 1 1 C6;C7XCHD A,@Ri 间接Rn 与A 低半字节交换 1 1 D6;D7XRL A,Rn 寄存器异或到A 1 1 68—6FXRL A,data 直接字节异或到A 1 1 65XRL A,@Ri 间接RAM异或到A 2 1 66;67XRL A,#data 立即数异或到A 1 1 64XRL data,A A异或到直接字节 2 1 62XRL data,#data 立即数异或到直接字节 3 2 63助记符说明字节周期代码注:Rn 表示寄存器R0-R7。