单片机汇编指令大全
单片机指令大全
单片机指令大全- - 指令格式功能简述字节数周期一、数据传送类指令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 2 MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2 MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2 XCH A ,Rn 累加器与寄存器交换 1 1XCH A ,@Ri 累加器与内部RAM单元交换 1 1 XCHD A ,direct 累加器与直接寻址单元交换 2 1XCHD 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 1INC 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 1 SUBB 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 1 ORL A,direct 累加器或直接寻址单元 2 1 ORL direct, A 直接寻址单元或累加器 2 1 ORL direct, #data 直接寻址单元或立即数 3 1 XRL A, Rn 累加器异或寄存器 1 1XRL A,@Ri 累加器异或内部RAM单元 1 1 XRL A,#data 累加器异或立即数 2 1 XRL A,direct 累加器异或直接寻址单元 2 1 XRL direct, A 直接寻址单元异或累加器 2 1 XRL direct, #data 直接寻址单元异或立即数 3 2 RL A 累加器左循环移位 1 1RLC A 累加器连进位标志左循环移位 1 1 RR A 累加器右循环移位 1 1RRC A 累加器连进位标志右循环移位 1 1 CPL A 累加器取反 1 1CLR A 累加器清零 1 1四、控制转移类指令类ACCALL addr11 2KB范围内绝对调用 2 2 AJMP addr11 2KB范围内绝对转移 2 2 LCALL addr16 2KB范围内长调用 3 2 LJMP addr16 2KB范围内长转移 3 2 SJMP 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 2 DJNZ 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转移 3 2JBC bit,rel 直接寻址位为1转移并清该位 3 2单片机MCS-51系列指令快速记忆法随着微电子技术和超大规模集成电路技术的发展,单片微型计算机以其体积小、性价比高、功能强、可靠性高等独有的特点,在各个领域(如工业控制、家电产品、汽车电子、通信、智能仪器仪表)得到了广泛的应用。
单片机指令大全(二)2024
单片机指令大全(二)引言概述:本文是关于单片机指令大全的第二部分。
在上一部分中,我们介绍了一些常用的单片机指令和其功能。
本文将继续介绍更多的单片机指令,包括数据传输、逻辑运算、算术运算、位操作以及状态寄存器等方面的指令。
这些指令将帮助您更好地理解和使用单片机。
1. 数据传输指令1.1. MOV指令:将一个数据从源操作数传送到目的操作数。
1.2. LDI指令:将一个立即数传送到一个寄存器。
1.3. LDS和STS指令:将数据从SRAM传送到寄存器或将寄存器的数据传送到SRAM。
1.4. IN和OUT指令:将数据从端口传送到寄存器或从寄存器传送到端口。
2. 逻辑运算指令2.1. AND、OR和XOR指令:进行逻辑与、逻辑或和逻辑异或运算。
2.2. NOT指令:对一个寄存器的数据进行逻辑非运算。
2.3. CLR指令:将一个寄存器的数据清零。
3. 算术运算指令3.1. ADD和SUB指令:对两个操作数进行加法或减法运算。
3.2. INC和DEC指令:对一个寄存器的数据进行加1或减1操作。
3.3. MUL和DIV指令:进行乘法和除法运算。
4. 位操作指令4.1. ANDI、ORI和XORI指令:对一个寄存器的数据进行与、或和异或运算。
4.2. SBI和CBI指令:设置或清除一个I/O端口的某个位。
4.3. SBIC和SBIS指令:跳转指令,根据指定的I/O端口位是否被设置或清除执行跳转操作。
5. 状态寄存器相关指令5.1. SEI和CLI指令:设置或清除全局中断。
5.2. SREG指令:用于保存和恢复状态寄存器的值。
5.3. IJMP和EIJMP指令:用于从程序中直接跳转到任意存储器位置。
总结:本文介绍了单片机指令大全的第二部分内容,包括数据传输、逻辑运算、算术运算、位操作以及状态寄存器等方面的指令。
这些指令的功能与用法将有助于您更好地理解和应用单片机。
通过熟练掌握这些指令,您将能够更加灵活地进行单片机程序的设计与开发。
单片机指令大全
单片机指令大全
单片机指令大全是一种汇编语言和机器语言结合的指令集,它在微处理器内部执行,包括算术运算指令、数据传送指令、控制流指令、I/O操作指令等。
常用的单片机指令大全如下:
1. MOV:移动指令,将源操作数的值移动到目标操作数中。
2. ADD:加法指令,将源操作数的值加上目标操作数的值,并将结果存储在目标操作数中。
3. SUB:减法指令,将源操作数的值减去目标操作数的值,并将结果存储在目标操作数中。
4. CMP:比较指令,比较源操作数的值和目标操作数的值,并设置标志位来标识结果是否大于、小于或等于。
5. AND:逻辑与指令,将源操作数的值与目标操作数的值按位与,并将结果存储在目标操作数中。
6. OR:逻辑或指令,将源操作数的值与目标操作数的值按位或,并将结果存储在目标操作数中。
7. XOR:逻辑异或指令,将源操作数的值与目标操作数的值按位异或,并将结果存储在目标操作数中。
8. JMP:无条件跳转指令,跳转到指定的指令地址。
9. JZ:当ZF(零标志)=1时跳转,跳转到指定的指令地址。
10. JC:当CF(进位标志)=1时跳转,跳转到指定的指令地址。
单片机汇编语言指令集
汇编语言的所有指令数据传送指令集MOV功能: 把源操作数送给目的操作数语法: MOV 目的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,mPUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPALEA,LDS,LES功能: 取地址至寄存器语法: LEA r,m LDS r,m LES r,mXLAT(XLATB)功能: 查表指令语法: XLAT XLAT m算数运算指令ADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,Z,S,OSUB,SBB功能:减法指令语法: SUB OP1,OP2 SBB OP1,OP2格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data影响标志: C,P,A,Z,S,OINC,DEC功能: 把OP的值加一或减一语法: INC OP DEC OP格式: INC r/m DEC r/m影响标志: P,A,Z,S,ONEG功能: 将OP的符号反相(取二进制补码)语法: NEG OP格式: NEG r/m影响标志: C,P,A,Z,S,OMUL,IMUL功能: 乘法指令语法: MUL OP IMUL OP格式: MUL r/m IMUL r/m影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)DIV,IDIV功能:除法指令语法: DIV OP IDIV OP格式: DIV r/m IDIV r/mCBW,CWD功能: 有符号数扩展指令语法: CBW CWDAAA,AAS,AAM,AAD功能: 非压BCD码运算调整指令语法: AAA AAS AAM AAD影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)DAA,DAS功能: 压缩BCD码调整指令语法: DAA DAS影响标志: C,P,A,Z,S位运算指令集AND,OR,XOR,NOT,TEST功能: 执行BIT与BIT之间的逻辑运算语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL功能: 移位指令语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL影响标志: C,P,Z,S,OROR,ROL,RCR,RCL功能: 循环移位指令语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL 影响标志: C,P,Z,S,O程序流程控制指令集CLC,STC,CMC功能: 设定进位标志语法: CLC STC CMC标志位: CCLD,STD功能: 设定方向标志语法: CLD STD标志位: DCLI,STI功能: 设定中断标志语法: CLI STI标志位: ICMP功能: 比较OP1与OP2的值语法: CMP r/m,r/m/data标志位: C,P,A,Z,OJMP功能: 跳往指定地址执行语法: JMP 地址JXX功能: 当特定条件成立则跳往指定地址执行语法: JXX 地址注:A: ABOVE,当C=0,Z=0时成立B: BELOW,当C=1时成立C: CARRY,当弁时成立CXZ: CX寄存器的值为0(ZERO)时成立E: EQUAL,当Z=1时成立G: GREATER(大于),当Z=0且S=0时成立L: LESS(小于),当S不为零时成立N: NOT(相反条件),需和其它符号配合使用O: OVERFLOW,O=1时成立P: PARITY,P=1时成立PE: PARITY EVEN,P=1时成立PO: PARITY ODD,P=0时成立S: SIGN,S=1时成立Z: ZERO,Z=1时成立LOOP功能: 循环指令集语法: LOOP 地址LOOPE(Z)地址LOOPNE(Z) 地址标志位: 无CALL,RET功能: 子程序调用,返回指令语法: CALL 地址RET RET n标志位: 无INT,IRET功能: 中断调用及返回指令语法: INT n IRET标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器字符串操作指令集MOVSB,MOVSW,MOVSD功能: 字符串传送指令语法: MOVSB MOVSW MOVSD标志位: 无CMPSB,CMPSW,CMPSD功能: 字符串比较指令语法: CMPSB CMPSW CMPSD标志位: C,P,Z,S,OSCASB,SCASW功能: 字符串搜索指令语法: SCASB SCASW标志位: C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能: 字符串载入或存贮指令语法: LODSB LODSW STOSB STOSW标志位: 无REP,REPE,REPNE功能: 重复前缀指令集语法: REP 指令S REPE 指令S REPNE 指令S标志位: 依指令S而定对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。
单片机汇编指令
单片机汇编指令单片机(Microcontroller)是一种集成了微处理器和其他外设的集成电路芯片,用于控制各种电子设备。
在单片机的开发过程中,编程是必不可少的一部分,而汇编语言是一种常用于单片机编程的低级语言。
汇编语言是一种和机器语言十分接近的编程语言,使用简单的助记符(Mnemonic)来代表机器指令,方便程序员进行编程。
在单片机开发中,汇编语言的指令集是非常重要的知识,掌握好单片机的汇编指令对于编写高效、性能优良的程序至关重要。
本文将介绍一些常见的单片机汇编指令,供大家参考和学习。
一、数据传输指令1. MOV 指令:将数据从一个存储器位置或寄存器传输到另一个存储器位置或寄存器。
例如:MOV A, B ;将B的值传送给A寄存器MOV R1, #20 ;将数值20传送给R1寄存器2. LDA 和 STA 指令:分别用于将数据从存储器加载到累加器和将累加器中的数据存储到存储器中。
例如:LDA 0x20 ;将地址为0x20的存储器单元的数据加载到累加器STA 0x30 ;将累加器中的数据存储到地址为0x30的存储器单元3. XCH 指令:用于交换两个存储器位置或寄存器的数据。
例如:XCH A, B ;交换A和B寄存器的值二、算术指令1. ADD 和 SUB 指令:分别用于将数据相加和相减。
例如:ADD A, B ;将A和B的值相加,并将结果存储到A寄存器SUB A, B ;将B的值从A中减去,并将结果存储到A寄存器2. INC 和 DEC 指令:分别用于将数据递增和递减。
例如:INC A ;将A的值递增1DEC A ;将A的值递减1三、逻辑指令1. AND、OR 和 XOR 指令:分别用于进行逻辑与、逻辑或和逻辑异或操作。
例如:AND A, B ;将A和B的值进行逻辑与操作,并将结果存储到A寄存器OR A, B ;将A和B的值进行逻辑或操作,并将结果存储到A寄存器XOR A, B ;将A和B的值进行逻辑异或操作,并将结果存储到A寄存器2. NOT 指令:用于对一个存储器位置或寄存器中的数据进行逻辑非操作。
单片机汇编指令集合(中英指令翻译)
一、数据传送类指令(8种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;P55PUSH (Push onto Stack) 入栈;PUSH directPOP (Pop from Stack) 出栈;POP directXCH (Exchange) 字节交换;XCH A,源/@RiXCHD (Exchange low-order Digit) 低半字节交换;同上SWAP (Swap) 低4位与高4位交换;SWAP A MOVC(Move Code)读取程序存储器数据表格的数据传送;MOVC A,@A+DPTR/PC MOVX (Move External RAM) 对外部RAM的数据传送;MOVX @DPTR,A MOVX A,@DPTR/@Ri MOVX @Ri,A二、算术运算类指令(8种助记符)ADD(Addition) 加法;ADDC(Add with Carry) 带进位加法;INC(Increment) 加1;INC A/Rn/direct/@Ri/源/DPTRDA(Decimal Adjust) 十进制调整;SUBB(Subtract with Borrow) 带借位减法;DEC(Decrement) 减1;DEC A/Rn/direct/@Ri/源MUL(Multiplication、Multiply) 乘法;MUL AB 高B,低A。
Cy=0 大于256,OV=1 DIV(Division、Divide) 除法;DIV AB 商A,余B。
Cy=0 OV=B(同上)三、逻辑运算类指令(9种助记符)CLR(Clear) 清零;CLR ACPL(Complement) 取反;CPL ARL(Rotate left) 循环左移;(同上)RLC(Rotate Left throught the Carry flag) 带进位循环左移;(同上)RR(Rotate Right) 循环右移;(同上)RRC (Rotate Right throught the Carry flag) 带进位循环右移;(同上)ANL(AND Logic) 逻辑与;ANL A,#data/Rn/direct/@Ri ANL direct,A/#dataORL(OR Logic) 逻辑或;ORL A,#data/Rn/direct/@Ri ANL direct,A/#dataXRL(Exclusive-OR Logic) 逻辑异或;(同上)四、位操作指令(6种助记符)MOV 位数据传送指令;MOV C,bit MOV bit,CCLR 位清零;C bitSETB(Set Bit)位置1;C bitCPL位取反;(同上)ANL位逻辑运算指令;ANL C,bit//bitORL位逻辑或运算指令;(同上)五、控制转移类指令(18种助记符)AJMP(Absolute Jump)绝对转移;AJMP addr11/ LABELLJMP(Long Jump)长转移;(同上)SJMP(Short Jump)短转移;SJMP rel/ LABELJMP间接转移指令; JMP @A+DPTRJZ (Jump if Zero)结果为0则转移;JZ rel/ LABELJNZ (Jump if Not Zero) 结果不为0则转移;(同上)CJNE (Compare Jump if Not Equal)比较不相等则转移;CJNE A,direct,rel/ LABEL CJNE A/Rn/@Ri,#data,rel/ LABELJC (Jump if the Carry flag is set)有进位则转移;JC rel/ LABELJNC (Jump if Not Carry)无进位则转移;(同上)JB (Jump if the Bit is set)位为1则转移;JB bit, rel/ LABELJNB (Jump if the Bit is Not set) 位为0则转移;(同上)JBC(Jump if the Bit is set and Clear the bit) 为1则转移,并清除该位;DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;DJNZ Rn,rel/ LABEL DJNZ direct,rel/ LABELLCALL(Long subroutine Call)子程序长16调用;LCALL addr16/ SUBROUTINEACALL(Absolute subroutine Call)子程序绝对11调用;(同上)RET(Return from subroutine)子程序返回;RETI(Return from Interruption)中断返回;NOP (No Operation) 空操作;8种常用伪指令1.ORG 16位地址;此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。
单片机汇编指令
单片机汇编指令单片机汇编指令:为解决某些特定的问题代码中必须嵌入汇编语言以代替C语言完成的单片机的编程,汇编语言对于程序调试是不可或缺的。
它包括:数据传送类指令,算术运算类指令,逻辑运算与循环类指令,控制转移类指令,位操作(布尔操作)类指令。
现在单片机的编程大多是C语言完成但有时代码中必须嵌入汇编语言解决某些特定的问题,对于程序调试汇编语言更是不可或缺一.数据传送类指令:(1)一般传送指令:①8位传送:1 MOV A,Rn ;A←(Rn):寄存器内容送入累加器2 MOV A,direct ;A←(direct):直接地址单元中的数据送入累加器3 MOV A,@Ri ;A←((Ri)):间接RAM 中的数据送入累加器4 MOV A,#data ;A←(data):立即数送入累加器5 MOV Rn,A ;Rn←(A):累加器内容送入寄存器6 MOV Rn,direct ;Rn←(direct):直接地址单元中的数据送入寄存器7 MOV Rn,#data ;Rn←(data):立即数送入寄存器8 MOV direct,A ;direct←(A):累加器内容送入直接地址单元9 MOV direct,Rn ;direct←(Rn):寄存器内容送入直接地址单元10 MOV direct,direct;direct←(direct):直接地址单元中的数据送入另一个直接地址单元11 MOV direct,@Ri ;direct←(@Ri):间接RAM 中的数据送入直接地址单元12 MOV direct,#data ;direct←(data):立即数送入直接地址单元13 MOV @Ri,A;Ri←(A):累加器内容送入间接RAM 单元14 MOV @Ri,direct ;Ri←(direct)直接地址单元数据送入间接RAM 单元15 MOV @RI,#data ;Ri←(data):立即数送入间接RAM 单元②16位传送:16 MOV DRTR,#data16 ;(DRTR) ←(data16):16 位立即数送入地址寄存器(2)特殊传送指令:⑤①读取常数表:17 MOVC A,@A+DPTR ;A←((A)+(DPTR)):以DPTR为基地址变址寻址单元中的数据送入累加器18 MOVC A,@A+PC;A←((A)+(PC)):以PC 为基地址变址寻址单元中的数据送入累加器②读写片外RAM及接口单元数据:读片外RAM:19 MOVX A,@Ri ;A←((Ri)):外部RAM(8 位地址)送入累加器20 MOVX A,@DPTR ;A←((DPTR)):外部RAM(16 位地址)送入累加器写片外RAM:21 MOVX @Ri,A ; (Ri)←(A):累计器送外部RAM(8 位地址)22 MOVX @DPTR,A ;(DPTR)←(A):累计器送外部RAM(16 位地址)③堆栈操作指令:23 PUSH direct;SP←(SP),(SP)←(direct)直接地址单元中的数据压入堆栈24 POP direct ;(direct)←((SP)), SP←(SP)-1:弹栈送直接地址单元④数据交换指令:字节交换:25 XCH A,Rn ;(A)←→(Rn):寄存器与累加器交换26 XCH A,direct ;(A)←→(direct):直接地址单元与累加器交换27 XCH A,@Ri; (A)←→(Ri):间接RAM 与累加器交换半字节交换:28 XCHD A,@Ri ;((Ri).3~(Ri).0) ←→(ACC.3~ACC.0):间接RAM 的低半字节与累加器的弟半字节交换29 SWAP A ;(ACC.7~ACC.4)←→(ACC.3~ACC.0):累加器的高低4位互换二.算术运算类指令:(1)不带进位加法:1 ADD A,Rn ;A←(A)+(Rn):寄存器内容加到累加器2 ADD A,direct;A←(A)+(direct):直接地址单元的内容加到累加器3 ADD A,@Ri;A←(A)+((Ri)):间接ROM 的内容加到累加器4 ADD A,#data;A←(A)+ data:立即数加到累加器(2)带进位加法:5 ADDC A,Rn ;A←(A)+(Rn)+(CY):寄存器内容带进位加到累加器6 ADDC A,direct;A←(A)+(direct)+(CY):直接地址单元的内容带进位加到累加器7 ADDC A,@Ri ;A←(A)+((Ri))+(CY):间接ROM 的内容带进位加到累加器8 ADDC A,#data;A←(A)+ data+(CY):立即数带进位加到累加器(3)加1:9 INC A;A←(A)+1:累加器加110 INC Rn;A←(Rn)+1:寄存器加111 INC direct;A←(direct)+1:直接地址单元加112 INC @Ri;(Ri)←((Ri))+1:间接RAM 单元加113 INC DPTR;DPTR←(DPTR)+1:地址寄存器DPTR 加 1(4)十进制调整:DA A;调整A的内容为正确的BCD码(5)带借位减法:14 SUBB A,Rn ;A←(A)-(Rn)-(CY):累加器带借位减寄存器内容15 SUBB A,direct;A←(A)-(direct)-(CY):累加器带借位减直接地址单元的内容16 SUBB A,@Ri ;A←(A)-(Ri)-(CY):累加器带借位减间接RAM 中的内容17 SUBB A,#data ;A←(A)-data-(CY):累加器带借位减立即数(6)减1:18 DEC A ;A←(A)-1:累加器减119 DEC Rn ;A←(Rn)-1:寄存器减120 DEC direct ;A←(direct)-1:直接地址单元减121 DEC @Ri;A←(Ri)-1:间接RAM 单元减 1(7)乘法:22 MUL AB;累加器A与寄存器B相乘(乘积的低8位存在A中,高8位存在B中)(8)乘法:23 DIV AB;累加器A除以寄存器B (商的整数部分存放在A中,余数存在B中)三.逻辑运算与循环类指令:(1)逻辑与:1 ANL A,Rn; A←(A)∧(Rn) :累加器与寄存器相“与”2 ANL A,direct;A←(A)∧(direct):累加器与直接地址单元相“与”3 ANL A,@Ri; A←(A)∧(Ri):累加器与间接RAM 单元相“与”4 ANL A,#data;A←(A)∧data:累加器与立即数相“与”5 ANL direct,A;direct←(direct)∧(A):直接地址单元与累加器相“与”6 ANL direct,#data;direct←(direct)∧data:直接地址单元与立即数相“与”(2)逻辑或:7 ORL A,Rn ;A←(A)∨(Rn):累加器与寄存器相“或”8 ORL A,direct ;A←(A)∨(direct):累加器与直接地址单元相“或”9 ORL A,@Ri;A←(A)∨(Ri):累加器与间接RAM 单元单元相“或”10 ORL A,#data;A←(A)∨data:累加器与立即数相“或”11 ORL direct,A;direct←(direct)∨(A):直接地址单元与累加器相“或”12 ORL direct,#data;direct←(direct)∨data:直接地址单元与立即数相“或”(3)逻辑或与:13 XRL A,Rn; A←(A)⊕(Rn) :累加器与寄存器相“异或”14 XRL A,direct;A←(A)⊕ (direct):累加器与直接地址单元相“异或”15 XRL A,@Ri; A←(A)⊕ (Ri):累加器与间接RAM 单元单元相“异或”16 XRL A,#data;A←(A)⊕data:累加器与立即数相“异或”17 XRL direct,A;direct←(direct)⊕(A):直接地址单元与累加器相“异或”18 XRL direct,#data;direct←(direct)⊕data:直接地址单元与立即数相“异或”(4)累加器清0或取反:19 CLR A;A←0:累加器清“0”(5)累加器循环移位:21 RL A ;1~7A ←(0~6A ),0A ←(7A ):累加器循环左移22 RLC A ;CY ←(7A ),1~7A ←(0~6A ),0A ←(CY ):累加器带进位位循环左移 23 RR A ;1~7A →(0~6A ),0A →(7A ):累加器循环右移24 RRC A ;CY →(7A ),1~7A →(0~6A ),0A →(CY ):累加器带进位位循环右移四.控制转移类指令:(1)无条件转移:1 AJMP addr11 ;PC ←(PC)+2,P 0~10C ←addr11:绝对(短)转移2 LJMP addr16;PC ←addr16:长转移3 SJMP rel ;PC ←(PC)+2,PC ←(PC)+rel :相对转移4 JMP @A+DPTR ;PC ←(PC)+1,PC ←(A)+(DPTR):相对于DPTR 的间接转移(散转移)(2)条件转移:①累加器判0转移:5 JZ rel ;若(A)=0,则PC ←(PC)+rel :累加器为零转移6 JNZ rel ;若(A)≠0,则PC ←(PC)+rel :累加器不为零转移②比较不相等转移:7 CJNE rel 累加器非零转移8 CJNE A,direct,rel ;累加器与直接地址单元比较,不相等则转移9 CJNE A,#data,rel 累加器与立即数比较,不相等则转移10 CJNE Rn,#data,rel 寄存器与立即数比较,不相等则转移11 CJNE @Ri,#data,rel 间接RAM 单元与立即数比较,不相等则转移 ③减1不为0转移:12 DJNZ Rn,rel ;寄存器减1,非零转移13 DJNZ direct, rel ;直接地址单元减1,非零转移(3)调用与返回:①调用:14 ACALL addr11;绝对(短)调用子程序15 LCALL addr16;长调用子程序 ②返回16 RET ;子程序返回17 RETI ;中断服务子程序返回(4)空做操:18 NOP ;空操作五.位操作(布尔操作)类指令:(1)位传送:11 MOV C,bit ;bit←(CY):直接地址位送入进位位12 MOV bit,C ;CY←(bit):进位位送入直接地址位(2)位状态设置:①位清0:1 CLR C ;CY←0:清进位位2 CLR bit;bit←0:清直接地址位②位置位:3 SETB C;CY←1:置进位位4 SETB bit;bit←1:置直接地址位(3)位逻辑运算:①位逻辑与:7 ANL C,bit;进位位和直接地址位相“与”8 ANL C,/bit;进位位和直接地址位的反码相“与”②位逻辑或:9 ORL C,bit;进位位和直接地址位相“或”10 ORL C,/bit;进位位和直接地址位的反码相“或”③位取反:5 CPL C;CY←(CY):进位位求反6 CPL bit;bit←(bit):置直接地址位求反(4)位判跳(条件转移):①判CY转移:13 JC rel;若(CY)=1,PC←(PC)+2+rel,否则顺次执行:进位位为1 则转移14 JNC rel;若(CY)=0,PC←(PC)+2+rel,否则顺次执行:进位位为0 则转移②判bit转移:15 JB bit,rel;(bit)=1,PC←(PC)+3+rel,否则顺次执行:直接地址位为1 则转移16 JBC bit,rel;(bit)=1,PC←(PC)+3+rel,并使bit←0,否则顺次执行:直接地址位为0 则转移17 JNB bit,rel;(bit)=0,PC←(PC)+3+rel,否则顺次执行:直接地址位为1 则转移,该位清零。
单片机指令大全(一)
单片机指令大全(一)引言概述:本文是关于单片机指令的大全,主要介绍了单片机指令的基本概念和应用。
单片机指令是单片机操作的核心,具有重要的意义。
本文将按照不同的功能对单片机指令进行分类和阐述,为读者提供一份全面而简明的单片机指令资料。
正文:一、数据传送相关指令1. mov指令:用于将数据从一个寄存器传送到另一个寄存器2. ldi指令:用于将立即数存入寄存器3. ld指令:用于将存储器中的数据传送到寄存器4. st指令:用于将寄存器中的数据传送到存储器5. push和pop指令:用于将数据存入和取出堆栈二、算术运算指令1. add指令:用于将两个寄存器中的数据相加2. sub指令:用于将一个寄存器中的数据减去另一个寄存器中的数据3. inc和dec指令:用于将一个寄存器中的数据递增或递减4. mul和div指令:用于进行乘法和除法运算5. clr指令:用于将一个寄存器中的数据清零三、逻辑运算指令1. and指令:用于对两个寄存器中的数据进行按位与运算2. or指令:用于对两个寄存器中的数据进行按位或运算3. xor指令:用于对两个寄存器中的数据进行按位异或运算4. not指令:用于对一个寄存器中的数据进行取反运算5. test指令:用于对寄存器数据进行测试四、跳转指令1. jmp指令:用于无条件跳转到指定的地址2. jc、jnc、jz、jnz指令:用于根据特定条件进行跳转3. call和ret指令:用于子程序调用和返回4. cmp指令:用于比较两个寄存器中的数据5. loop指令:用于循环执行指定次数的程序五、I/O操作指令1. in指令:用于输入外设数据到寄存器中2. out指令:用于将寄存器中的数据输出到外设3. stc和clc指令:用于设置和清除进位标志位4. ei和di指令:用于开启和关闭中断5. hlt指令:用于控制单片机暂停执行总结:本文介绍了单片机指令的基本概念和分类,并详细阐述了每类指令的具体功能和使用方法。
51单片机汇编指令
MCS-51汇编指令(111条)数据传送指令(28)一、内部数据传送指令(15条)1、立即寻址型传送指令MOV A, #data ;A←dataMOV Rn, #data ;Rn←dataMOV @Ri, #data ;(Ri)←dataMOV direct, #data ;direct ←data2、直接寻址型传送指令MOV A, direct ;A←(direct)MOV direct, A ;direct←AMOV Rn, direct ;Rn←(direct)MOV @Ri, direct ;(Ri)←(direct)MOV direct2, direct1 ;direct2←(direct1)3、寄存器寻址型传送指令MOV A,Rn;A←RnMOV Rn, A ;Rn←AMOV direct,Rn;direct←Rn4、寄存器间址型传送指令MOV A, @Ri ;A←(Ri)MOV @Ri, A ;(Ri)←AMOV direct, @Ri ;direct←(Ri)二、外部数据传送指令(7条)1、16位数据传送指令MOV DPTR, #data16 ;DPTR←data162、外部ROM的字节传送指令MOVC A, @A+DPTR ;A←(A+DPTR)MOVC A, @A+PC ;PC←PC+1,A←(A+PC)3、外部RAM的字节传送指令MOVX A,@Ri ;A←(Ri)MOVX @Ri,A ;(Ri)←AMOVX A,@DPTR ;A←(DPTR)MOVX @DPTR,A ;(DPTR)←A三、堆栈操作指令(2条)1、压栈指令PUSH direct ;SP←SP+1,(SP)←(direct) 2、弹出指令POP direct ;(SP)→direct, SP-1→ SP四、数据交换指令(4条)XCH A,Rn;A↔RnXCH A, direct;A↔directXCH A, @Ri ;A↔(Ri)XCH A, @Ri;A3~0↔(Ri)3~0一、加法指令(13条)1、不带Cy的加法指令ADD A, Rn ;A←A+RnADD A, direct ;A←A+(direct)ADD A, @Ri ;A←A+(Ri)ADD A, #data ;A←A+data2、带Cy的加法指令ADDC A, Rn ;A←A+Rn+CyADDC A, direct ;A←A+(direct) +CyADDC A, @Ri ;A←A+(Ri) +CyADDC A, #data ;A←A+data+Cy3、加1指令INC A ;A←A+1 (对奇偶校验位P有影响)INC Rn ;Rn←Rn+1INC direct ;direct←(direct)+1INC @Ri ;(Ri) ← (Ri) +1INC DPTR ;DPTR←DPTR+1(唯一的16位运算指令)二、减法指令(8条)1、带Cy的减法指令(4条)SUBB A, Rn ;A←A-Rn-CySUBB A, direct ;A←A-(direct) -CySUBB A, @Ri ;A←A-(Ri) -CySUBB A, #data ;A←A-data-Cy2、减1指令(4条)DEC A ;A←A-1(对奇偶校验位P有影响)DEC Rn ;Rn←Rn-1DEC direct ;direct←(direct)-1DEC @Ri ;(Ri) ← (Ri) -1三、十进制调整指令(1条)DA A ;若AC=1或A3~A0 > 9 ,则A←A+06H ;若Cy=1或A7~A4 > 9 ,则A←A+60H;对进位标志位Cy和AC有影响。
单片机指令大全
引言概述:单片机指令是嵌入式系统设计中至关重要的一部分,它们定义了单片机的功能和操作。
本文是单片机指令大全系列的第二部分,旨在提供更多全面的单片机指令信息,帮助读者更好地理解和应用单片机指令。
正文内容:一、移位指令1.逻辑左移指令:将操作数的每一位向左移动一位,并且最低位填充0。
2.逻辑右移指令:将操作数的每一位向右移动一位,并且最高位填充0。
3.算术右移指令:将操作数的每一位向右移动一位,并且最高位保持不变。
4.循环左移指令:将操作数的每一位向左循环移动一位,即最高位移动到最低位。
5.循环右移指令:将操作数的每一位向右循环移动一位,即最低位移动到最高位。
二、逻辑运算指令1.逻辑与指令:对操作数进行逻辑与运算,将两个二进制数对应位上的值进行逻辑与操作。
2.逻辑或指令:对操作数进行逻辑或运算,将两个二进制数对应位上的值进行逻辑或操作。
3.逻辑非指令:对操作数进行逻辑非运算,将二进制数的每一位取反。
4.逻辑异或指令:对操作数进行逻辑异或运算,将两个二进制数对应位上的值进行逻辑异或操作。
5.逻辑移位指令:将操作数进行逻辑左移或右移。
三、算术运算指令1.加法指令:对操作数进行加法运算,并将运算结果保存到指定的寄存器或存储器中。
2.减法指令:对操作数进行减法运算,并将运算结果保存到指定的寄存器或存储器中。
3.乘法指令:对操作数进行乘法运算,并将运算结果保存到指定的寄存器或存储器中。
4.除法指令:对操作数进行除法运算,并将运算结果保存到指定的寄存器或存储器中。
5.移位指令:对操作数进行移位运算,包括算术左移、算术右移、循环左移和循环右移。
四、输入输出指令1.读取输入指令:从指定的输入设备读取数据,并将数据保存到指定的寄存器或存储器中。
2.输出显示指令:将指定的数据从寄存器或存储器中读取,并显示到指定的输出设备上。
3.端口输入指令:从指定的端口读取数据,并将数据保存到指定的寄存器或存储器中。
4.端口输出指令:将指定的数据从寄存器或存储器中读取,并输出到指定的端口上。
单片机汇编语言指令.
汇编指令常用单片机汇编指令:1 .MOV A,Rn 寄存器内容送入累加器2 .MOV A,direct 直接地址单元中的数据送入累加器3 .MOV A,@Ri (i=0,1间接RAM 中的数据送入累加器4 .MOV A,#data 立即数送入累加器5 .MOV Rn,A 累加器内容送入寄存器6 .MOV Rn,direct 直接地址单元中的数据送入寄存器7 .MOV Rn,#data 立即数送入寄存器8 .MOV direct,A 累加器内容送入直接地址单元9 .MOV direct,Rn 寄存器内容送入直接地址单元10.MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元11.11 .MOV direct,@Ri (i=0,1间接RAM 中的数据送入直接地址单元12.12 MOV direct,#data 立即数送入直接地址单元13.13 .MOV @Ri,A (i=0,1累加器内容送间接RAM 单元14.14 .MOV @Ri,direct (i=0,1直接地址单元数据送入间接RAM 单元15.15 .MOV @Ri,#data (i=0,1立即数送入间接RAM 单元16 .MOV DPTR,#data1616.16 位立即数送入地址寄存器17.17 .MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器18.18 .MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器19.19 .MOVX A,@Ri (i=0,1外部RAM(8 位地址送入累加器20.20 .MOVX A,@DPTR 外部RAM(16 位地址送入累加器21.21 .MOVX @Ri,A (i=0,1累计器送外部RAM(8 位地址22.22 .MOVX @DPTR,A 累计器送外部RAM(16 位地址23.23 .PUSH direct 直接地址单元中的数据压入堆栈24.24 .POP direct 弹栈送直接地址单元25.25 .XCH A,Rn 寄存器与累加器交换26.26 .XCH A,direct 直接地址单元与累加器交换27.27 .XCH A,@Ri (i=0,1间接RAM 与累加器交换28.28 .XCHD A,@Ri (i=0,1间接RAM 的低半字节与累加器交换算术操作类指令:1. ADD A,Rn 寄存器内容加到累加器2 .ADD A,direct 直接地址单元的内容加到累加器3 A.DD A,@Ri (i=0,1间接ROM 的内容加到累加器4 .ADD A,#data 立即数加到累加器5 .ADDC A,Rn 寄存器内容带进位加到累加器6 .ADDC A,direct 直接地址单元的内容带进位加到累加器7 .ADDC A,@Ri(i=0,1 间接ROM 的内容带进位加到累加器8 .ADDC A,#data 立即数带进位加到累加器9 .SUBB A,Rn 累加器带借位减寄存器内容10.SUBB A,direct 累加器带借位减直接地址单元的内容11.11 .SUBB A,@Ri (i=0,1累加器带借位减间接RAM 中的内容12.12 .SUBB A,#data 累加器带借位减立即数13.13 .INC A 累加器加114.14 .INC Rn 寄存器加115.15 .INC direct 直接地址单元加116.16 .INC @Ri (i=0,1间接RAM 单元加117.17 .DEC A 累加器减118.18 .DEC Rn 寄存器减119.19 .DEC direct 直接地址单元减120.20 .DEC @Rj 间接RAM 单元减121.21 .INC DPTR 地址寄存器DPTR 加122.22 .MUL AB A 乘以B,结果放在A23.23 .DIV AB A 除以B,结果放在A24.24. DA A 累加器十进制调整布尔变量操作类指令:1. CLR C 清进位位2 .CLR bit 清直接地址位3 .SETB C 置进位位4 .SETB bit 置直接地址位5 .CPL C 进位位求反6 .CPL bit 置直接地址位求反7 .ANL C,bit 进位位和直接地址位相“与”8 .ANL C,/bit 进位位和直接地址位的反码相“与”9 .ORL C,bit 进位位和直接地址位相“或”10.ORL C,/bit 进位位和直接地址位的反码相“或”11.11 .MOV C,bit 直接地址位送入进位位12.12 .MOV bit,C 进位位送入直接地址位13.13 .JC rel 进位位为1 则转移14.14 .JNC rel 进位位为0 则转移15.15 .JB bit,rel 直接地址位为1 则转移16.16 .JNB bit,rel 直接地址位为0 则转移17.17 .JBC bit,rel 直接地址位为1 则转移,该位清零逻辑操作数指令:1. ANL A,Rn 累加器与寄存器相“与”2 .ANL A,direct 累加器与直接地址单元相“与”3 .ANL A,@Ri 累加器与间接RAM 单元相“与”4 .ANL A,#data 累加器与立即数相“与”5 .ANL direct,A 直接地址单元与累加器相“与”6 .ANL direct,#data 直接地址单元与立即数相“与”7 .ORL A,Rn 累加器与寄存器相“或”8 .ORL A,direct 累加器与直接地址单元相“或”9 .ORL A,@Ri 累加器与间接RAM 单元单元相“或”10.ORL A,#data 累加器与立即数相“或”11.11. ORL direct,A 直接地址单元与累加器相“或”12.12 .ORL direct,#data 直接地址单元与立即数相“或”13.13 .XRL A,Rn 累加器与寄存器相“异或”14.14 .XRL A,direct 累加器与直接地址单元相“异或”15.15 .XRL A,@Ri 累加器与间接RAM 单元单元相“异或”16.16 .XRL A,#data 累加器与立即数相“异或”17.17 .XRL direct,A 直接地址单元与累加器相“异或”18.18 .XRL direct,#data 直接地址单元与立即数相“异或”19.19 .CLR A 累加器清“0”20.20 .CPL A 累加器求反21.21 .RL A 累加器循环左移22.22 .RLC A 累加器带进位位循环左移23.23 .RR A 累加器循环右移24.24 .RRC A 累加器带进位位循环右移25.25 .SW AP A 累加器半字节交换控制转移类指令1. ACALL addr11 绝对(短调用子程序2 .LCALL addr16 长调用子程序3 .RET 子程序返回4 .RETI 中数返回5 .AJMP addr11 绝对(短转移6 .LJMP addr16 长转移7 .SJMP rel 相对转移8 .JMP @A+DPTR 相对于DPTR 的间接转移9.JZ rel 累加器为零转移10.10. JNZ rel 累加器非零转移11.11. CJNE A,direct,rel 累加器与直接地址单元比较,不相等则转移12.12 .CJNE A,#data,rel 累加器与立即数比较,不相等则转移13.13 .CJNE Rn,#data,rel 寄存器与立即数比较,不相等则转移14.14 .CJNE @Ri,#data,rel 间接RAM 单元与立即数比较,不相等则转移15.15 .DJNZ Rn,rel 寄存器减1,非零转移16.16 .DJNZ direct,erl 直接地址单元减1,非零转移17.17 .NOP 空操作。
51单片机汇编指令表
以下是一些常见的51单片机(如8051系列)的汇编指令:
1. 数据传送指令:
- MOV:将一个数据或寄存器的值移动到另一个寄存器或存储器位置。
- MOVC:将数据从外部代码存储器复制到累加器或寄存器。
2. 算术运算指令:
- ADD:将累加器与另一个寄存器或存储器中的值相加。
- SUB:从累加器中减去另一个寄存器或存储器中的值。
- INC:将累加器或寄存器的值加1。
- DEC:将累加器或寄存器的值减1。
3. 逻辑运算指令:
- ANL:对累加器和另一个寄存器或存储器中的值进行逻辑与操作。
- ORL:对累加器和另一个寄存器或存储器中的值进行逻辑或操作。
- XRL:对累加器和另一个寄存器或存储器中的值进行逻辑异或操作。
- CPL:对累加器或寄存器中的值进行按位取反操作。
4. 条件分支指令:
- CJNE:比较两个值,并在不相等时跳转到指定的地址。
- DJNZ:递减累加器或寄存器,并在结果不为零时跳转到指定的地址。
5. 跳转指令:
- JMP:无条件跳转到指定的地址。
- SJMP:短跳转,跳转到相对于当前地址的指定偏移量。
- AJMP:绝对跳转,跳转到指定的地址。
- LCALL:长调用,将当前地址入栈并跳转到指定的子程序地址。
6. 位操作指令:
- SETB:将某个位设置为1。
- CLR:将某个位清零。
- JB:如果某个位为1,则跳转到指定地址。
- JNB:如果某个位为0,则跳转到指定地址。
单片机汇编语言(指令集锦)
单片机汇编语言一、格式[标号]:操作码[操作数];[注释]1.标号指令的符号地址,与操作码用‘:’分隔,其间可加若干空格。
有标号,程序的其他语句才可访问该语句。
可有可无。
规定:由8个以内的字母、数字构成,第一个必为字母,同一程序不可有相同标号,不能有助记符、伪指令、寄存器名、特殊符号等。
正确标号:AB1、NEXT、LOOP1。
错误标号:2A、S+M、EQU、ADD。
2.操作码说明语句功能,必不可少。
与操作数之间用空格相隔。
3.操作数说明操作对象。
可以是具体的数、标号(符号地址)、寄存器、直接地址等。
操作数为十六进制,且字母在最高位,则前面应补0.据指令之异,个数可为1、2、3或无。
各操作间用‘,’相隔。
4.注释程序说明。
以‘;’开头,可多行,每行都以‘;’开头。
二、寻址方式寻找操作数的地址。
1.寄存器寻址以通用寄存器的内容作为操作数,在指令的助记符中直接以寄存器名字来表示操作数位置。
51中若操作数以R0~R7表示操作数时,就属于此方式。
如:‘MOV A,R0’,功能:把寄存器R0的内容传送到累加器A中。
2.直接寻址在指令中直接给出操作数地址。
如:MOV ‘A,3AH’,功能:把内部RAM的3AH单元内容传送到累加器A中。
3.立即寻址指令的操作数是一个数。
该操作数被称为立即数。
立即数前加‘#’,如:’MOV A,#3AH’,功能:把立即数3AH送到累加器A中。
4.寄存器间接寻址寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,相应的寄存器前加@。
如:‘MOV A,@R0’,功能:取出寄存器R0中的值,将此值作为地址,取该地址单元中的内容传送到A。
5.变址寻址以某个寄存器的内容为基本地址,在此基本地址基础上加上地址偏移量作为真正的操作地址,并将此地址单元的内容作为指令的操作数。
51中,一般用数据指针DPTR或程序计数器PC的内容为基本地址,累加器A的内容为地址偏移量,并以DPTR+A或PC+A的值作为实际的操作数地址。
单片机汇编语言指令一览表
⒉时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
⒊控制线:控制线共有4根,⑴ALE/PROG:地址锁存允许/片内EPROM编程脉冲①ALE功能:用来锁存P0口送出的低8位地址②PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵PSEN:外ROM读选通信号。
⑶RST/VPD:复位/备用电源。
①RST(Reset)功能:复位信号输入端。
②VPD功能:在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:内外ROM选择/片内EPROM编程电源。
①EA功能:内外ROM选择端。
②Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源V pp。
⒋I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)5. P3口第二功能P30 RXD 串行输入口P31 TXD 串行输出口P32 INT0 外部中断0(低电平有效)P33 INT1 外部中断1(低电平有效)P34 T0 定时计数器0P35 T1 定时计数器1P36 WR 外部数据存储器写选通(低电平有效)P37 RD 外部数据存储器读选通(低电平有效)[编辑本段]单片机指令功能一览表一、传送操作助记符代码说明MOV A,Rn E8~EF 寄存器AMOV A,direct E5 dircet 直接字节送AMOV A,@Ri ER~E7 间接RAM送AMOV A,#data 74 data 立即数送AMOV Rn,A F8~FF A送寄存器MOV Rn,dircet A8~AF dircet 直接字节送寄存器MOV Rn,#data 78~7F data 立即数送寄存器MOV dircet,A F5 dircet A送直接字节MOV dircet,Rn 88~8F dircet 寄存器送直接字节MOV dircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节MOV dircet,@Ro 86~87 间接RAM送直接字节MOV dircet,#data 75 dircet data 立即数送直接字节MOV @Ri,A F6~F7 A送间接RAMMOV @Ri,#data 76~77 data 直接字节送间接RAMMOV @Ri,#data 76~77 data 立即数送间接RAMMOV DPTR,#data16 90 data 15~8 16位常数送数据指针data7~0MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮器字节选AMOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送A MOVX A,@Ri E2~E3 送外部数据(8位地址)送AMOVX A,@DPTR E0 送外部数据(16位地址)送AMOVX @Ri,A F2~F3 A送外部数据(8位地址)MOVX @DPTR,A F0 A送外部数据(16位地址)PUSH dircet C0 dircet 直接字节进栈,SP加1POP dircet D0 dircet 直接字节退栈,SP减1XCH A,Rn C8~CF 交换A和寄存器XCH A,dircet C5 dircet 交换A和直接字节XCH A,@Ri C6~C7 交换A和间接RAMXCH A,@Ri D6~D7 交换A和间接RAM的低位SWAP A C4二、算术操作(A的二个半字节交换)ADD A,Rn 28~2F 寄存器加到AADD A,dircet 25 dircet 直接字节加到AADD A,@Ri 26~27 间接RAM加到AADD A,#data 24data 立即数加到AADD A,Rn 38~3F 寄存器和进位位加到AADD A,dircet 35dircet 直接字节和进位位加到AADD A,@Ri 36~37 间接字节和进位位加到AADD A,data 34 data 立即数和进位位加到AADD A,Rn 98~9F A减去寄存器和进位位ADD A,dircet 95 dircet A减去直接字节和进位位ADD A,@Ri 36~37 间接RAM和进位位加到AADD A,data 34 data 立即数和进位位加到ASUBB A,Rn 98~9F A减去寄存器和进位位SUBB A,dircet 95 dircet A减去直接字节和进位位SUBB A,@Ri 96~97 A减去间接RAM和进位位SUBB A,#data 94 data A减去立即数和进位位INC A 04 A加1INC Rn 08~0F 寄存器加1INC dircet 05 dircet 直接字节加1INC @Ri 06~07 间接RAM加1DEC A 14 A减1DEC Rn 18~1F 寄存器减1DEC dircet 15 dircet 直接字节减1DEC @Ri 16~17 间接RAM减1INC DPTR A3 数据指针加1MUL AB A4 A乘以BDIV AB 84 A除以BDA A D4 A的十进制加法调整三、逻辑操作ANL A,Rn 58~5F 寄存器“与”到AANL A,dircet 55 dircet 直接字节“与”到AANL A,@Ri 56~57 间接RAm“与”到AANL A,#data 54 data 立即数“与”到AANL dircet A 52 dircet A“与”到直接字节ANL dircet,#data 53 dircet data 立即数“与”到直接字节ORL A,Rn 48~4F 寄存器“或”到AORL A,dircet 45 dircet 直接字节“或”到AORL A,@Ri 46~47 间接RAM“或”到AORL A,#data 44 data 立即数“或”到AORL dircet,A 42 dircet A“或”到直接字节ORL dircet,#data 43 dircet data 立即数“或”到直接字节XRL A,Rn 68~6F 寄存器“异或”到AXRL A,dircet 65 dircet 直接字节“异或”到AXRL A,@Ri 66~67 间接RAM“异或”到AXRL A,#data 64 data 立即数“异或”到AXRL dircet A 62 dircet A“异或”到直接字节XRL dircet,#data 63 dircet data 立即数“异或”到直接字节CLR A E4 清零CPL A F4 A取反RL A 23 A左环移RLC A 33 A通过进位左环移RR A 03 A右环移RRC A 13 A通过进位右环移四、控制程序转移ACALL addr 11 *1 addr(a7~a0) 绝对子程序调用LCALL addr 16 12 addr(15~8) 长子程序调用addr(7~0)RET 22 子程序调用返回RETI addr 11 32 中断调用返回AJMP addr 11 △1 addr(a7~a6) 绝对转移LJMP addr 16 02addr(15~8) 长转移addr(7~0)SJMP rel 80 rel 短转移,相对转移JMP @A+DPTR 73 相对于DPTR间接转移JZ rel 60 rel A为零转移JNZ rel 70 rel A为零转移CJNE A,dircet,rel B5 dircet rel 直接字节与A比较,不等则转移CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移CJNE A,Rn,#data,rel B8~BF data rel 立即数与寄存器比较,不等则转移CJNE @Ri,#data,rel B6~B7 data rel 立即数与间接RAM比较,不等则转移DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移DJNZ dircet,rel B5 dircet rel 直接字节减1,不为零则转移NOP 00 空操作*=a10a9a8l△=a10a9a80五、布尔变量操作CLR C C3 清零进位CLR bit C2 清零直接位SETB C D3 置位进位SETB bit D2 置位直接位CPL C B3 进位取反CPL bit B2 直接位取反ANL C,bit 82 dit 直接数“与”到进位ANL C,/bit B0 直接位的反“与”到进位ORL C,bit 72 bit 直接位“或”到进位ORL C,/bit A0 bit 直接位的反“或”到进位MOV C,bit A2 bit 直接位送进位MOV bit,C 92 bit 进位送直接位JC rel 40 rel 进位位为1转移JNC rel 50 rel 进位位为0转移JB bit,rel 20 bit rel 直接位为1相对转移JNB bit,rel 30 bit rel 直接位为0相对转移JBC bit,rel 10 bit rel 直接位为1相对转移,然后清零该位。
单片机汇编指令大全
单片机汇编指令一览表作者:乡下人助记符指令说明字节数周期数(数据传递类指令)MOV A,Rn 寄存器传送到累加器 1 1 MOV A,direct 直接地址传送到累加器 2 1 MOV A,@Ri 累加器传送到外部RAM(8 地址) 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1 MOV Rn,direct 直接地址传送到寄存器 2 2 MOV Rn,#data 累加器传送到直接地址 2 1 MOV direct,Rn 寄存器传送到直接地址 2 1 MOV direct,direct 直接地址传送到直接地址 3 2 MOV direct,A 累加器传送到直接地址 2 1 MOV direct,@Ri 间接RAM 传送到直接地址 2 2 MOV direct,#data 立即数传送到直接地址 3 2 MOV @Ri,A 直接地址传送到直接地址 1 2 MOV @Ri,direct 直接地址传送到间接RAM 2 1 MOV @Ri,#data 立即数传送到间接RAM 2 2 MOV DPTR,#data16 16 位常数加载到数据指针 3 1 MOVC A,@A+DPTR 代码字节传送到累加器 1 2 MOVC A,@A+PC 代码字节传送到累加器 1 2 MOVX A,@Ri 外部RAM(8 地址)传送到累加器 1 2 MOVX A,@DPTR 外部RAM(16 地址)传送到累加器 1 2 MOVX @Ri,A 累加器传送到外部RAM(8 地址) 1 2 MOVX @DPTR,A 累加器传送到外部RAM(16 地址) 1 2 PUSH direct 直接地址压入堆栈 2 2 POP direct 直接地址弹出堆栈 2 2 XCH A,Rn 寄存器和累加器交换 1 1 XCH A, direct 直接地址和累加器交换 2 1 XCH A, @Ri 间接RAM 和累加器交换 1 1 XCHD A, @Ri 间接RAM 和累加器交换低4 位字节 1 1(算术运算类指令)INC A 累加器加1 1 1 INC Rn 寄存器加1 1 1 INC direct 直接地址加1 2 1 INC @Ri 间接RAM 加1 1 1 INC DPTR 数据指针加1 1 2 DEC A 累加器减1 1 1 DEC Rn 寄存器减1 1 1 DEC direct 直接地址减1 2 2DEC @Ri 间接RAM 减1 1 1 MUL AB 累加器和B 寄存器相乘 1 4 DIV AB 累加器除以B 寄存器 1 4 DA A 累加器十进制调整 1 1 ADD A,Rn 寄存器与累加器求和 1 1 ADD A,direct 直接地址与累加器求和 2 1 ADD A,@Ri 间接RAM 与累加器求和 1 1 ADD A,#data 立即数与累加器求和 2 1 ADDC A,Rn 寄存器与累加器求和(带进位) 1 1 ADDC A,direct 直接地址与累加器求和(带进位) 2 1 ADDC A,@Ri 间接RAM 与累加器求和(带进位) 1 1 ADDC A,#data 立即数与累加器求和(带进位) 2 1 SUBB A,Rn 累加器减去寄存器(带借位) 1 1 SUBB A,direct 累加器减去直接地址(带借位) 2 1 SUBB A,@Ri 累加器减去间接RAM(带借位) 1 1 SUBB A,#data 累加器减去立即数(带借位) 2 1(逻辑运算类指令)ANL A,Rn 寄存器“与”到累加器 1 1 ANL A,direct 直接地址“与”到累加器 2 1 ANL A,@Ri 间接RAM“与”到累加器 1 1 ANL A,#data 立即数“与”到累加器 2 1 ANL direct,A 累加器“与”到直接地址 2 1 ANL direct, #data 立即数“与”到直接地址 3 2 ORL A,Rn 寄存器“或”到累加器 1 2 ORL A,direct 直接地址“或”到累加器 2 1 ORL A,@Ri 间接RAM“或”到累加器 1 1 ORL A,#data 立即数“或”到累加器 2 1 ORL direct,A 累加器“或”到直接地址 2 1 ORL direct, #data 立即数“或”到直接地址 3 1 XRL A,Rn 寄存器“异或”到累加器 1 2 XRL A,direct 直接地址“异或”到累加器 2 1 XRL A,@Ri 间接RAM“异或”到累加器 1 1 XRL A,#data 立即数“异或”到累加器 2 1 XRL direct,A 累加器“异或”到直接地址 2 1 XRL direct, #data 立即数“异或”到直接地址 3 1 CLR A 累加器清零 1 2 CPL A 累加器求反 1 1 RL A 累加器循环左移 1 1RLC A 带进位累加器循环左移 1 1 RR A 累加器循环右移 1 1 RRC A 带进位累加器循环右移 1 1 SWAP A 累加器高、低4 位交换 1 1(控制转移类指令)JMP @A+DPTR 相对DPTR 的无条件间接转移 1 2 JZ rel 累加器为0 则转移 2 2 JNZ rel 累加器为1 则转移 2 2 CJNE A,direct,rel 比较直接地址和累加器,不相等转移 3 2 CJNE A,#data,rel 比较立即数和累加器,不相等转移 3 2 CJNE Rn,#data,rel 比较寄存器和立即数,不相等转移 2 2 CJNE @Ri,#data,rel 比较立即数和间接RAM,不相等转移 3 2 DJNZ Rn,rel 寄存器减1,不为0 则转移 3 2 DJNZ direct,rel 直接地址减1,不为0 则转移 3 2 NOP 空操作,用于短暂延时 1 1 ACALL add11 绝对调用子程序 2 2 LCALL add16 长调用子程序 3 2 RET 从子程序返回 1 2 RETI 从中断服务子程序返回 1 2 AJMP add11 无条件绝对转移 2 2 LJMP add16 无条件长转移 3 2 SJMP rel 无条件相对转移 2 2(布尔指令)CLR C 清进位位 1 1 CLR bit 清直接寻址位 2 1 SETB C 置位进位位 1 1 SETB bit 置位直接寻址位 2 1 CPL C 取反进位位 1 1 CPL bit 取反直接寻址位 2 1 ANL C,bit 直接寻址位“与”到进位位 2 2 ANL C,/bit 直接寻址位的反码“与”到进位位 2 2 ORL C,bit 直接寻址位“或”到进位位 2 2 ORL C,/bit 直接寻址位的反码“或”到进位位 2 2 MOV C,bit 直接寻址位传送到进位位 2 1 MOV bit, C 进位位位传送到直接寻址 2 2 JC rel 如果进位位为1 则转移 2 2 JNC rel 如果进位位为0 则转移 2 2 JB bit,rel 如果直接寻址位为1 则转移 3 2JNB bit,rel 如果直接寻址位为0 则转移 3 2 JBC bit,rel 直接寻址位为1 则转移并清除该位 2 2(伪指令)ORG 指明程序的开始位置DB 定义数据表DW 定义16 位的地址表EQU 给一个表达式或一个字符串起名DATA 给一个8 位的内部RAM 起名XDATA 给一个8 位的外部RAM 起名BIT 给一个可位寻址的位单元起名END 指出源程序到此为止(指令中的符号标识)Rn 工作寄存器R0-R7Ri 工作寄存器R0 和R1@Ri 间接寻址的8 位RAM 单元地址(00H-FFH)#data8 8 位常数#data16 16 位常数addr16 16 位目标地址,能转移或调用到64KROM 的任何地方addr11 11 位目标地址,在下条指令的2K 范围内转移或调用Rel 8 位偏移量,用于SJMP 和所有条件转移指令,范围-128~+127 Bit 片内RAM 中的可寻址位和SFR 的可寻址位Direct 直接地址,范围片内RAM 单元(00H-7FH)和80H-FFH$ 指本条指令的起始位置。
单片机指令表汇总
51单片机指令表汇总51单片机是一种广泛应用的微控制器,其指令集是进行编程的基础。
下面将51单片机的指令表进行汇总,以帮助初学者更好地理解其指令集。
一、数据传输指令1、MOV指令:将源操作数的内容传送到目标操作数。
2、XCH指令:将两个操作数的内容互换。
3、MOVC指令:从外部存储器将数据传送到目标操作数。
4、MOVX指令:将外部存储器中的数据传送到目标操作数。
5、PUSH指令:将数据压入堆栈。
6、POP指令:从堆栈中弹出数据。
二、算术运算指令1、ADD指令:将两个操作数相加,并将结果存放在目标操作数中。
2、SUB指令:从目标操作数中减去源操作数,并将结果存放在目标操作数中。
3、MUL指令:将两个操作数相乘,并将结果存放在目标操作数中。
4、DIV指令:将目标操作数除以源操作数,并将结果存放在目标操作数中。
5、ANL指令:对目标操作数和源操作数进行按位与运算,并将结果存放在目标操作数中。
6、ORL指令:对目标操作数和源操作数进行按位或运算,并将结果存放在目标操作数中。
7、XRL指令:对目标操作数和源操作数进行按位异或运算,并将结果存放在目标操作数中。
8、CPL指令:对目标操作数进行按位取反运算,并将结果存放在目标操作数中。
9、INC指令:将目标操作数加1。
10、DEC指令:将目标操作数减1。
11、ASR指令:将目标操作数右移n位,最高位用符号位补齐。
12、LSR指令:将目标操作数右移n位,最低位用0补齐。
13、ROL指令:将目标操作数循环左移n位,最高位移入最低位。
14、ROR指令:将目标操作数循环右移n位,最低位移入最高位。
单片机汇编指令表一、概述在单片机的世界里,汇编语言扮演着举足轻重的角色。
它是一种低级语言,能够直接与硬件进行交互,提供高效的代码执行效率。
下面,我们将详细列出一些常见的单片机汇编指令,以及它们的功能。
二、指令表1、MOV指令:用于将数据从一个寄存器移动到另一个寄存器。
例如,MOV R1, R2将把 R2的内容移动到 R1中。
单片机汇编指令大全
1 MOV A,Rn 寄存器内容送入累加器2 MOV A,direct 直接地址单元中的数据送入累加器3 MOV A,@Ri 间接RAM 中的数据送入累加器4 MOV A,#tata 立即数送入累加器5 MOV Rn,A 累加器内容送入寄存器6 MOV Rn,direct 直接地址单元中的数据送入寄存器7 MOV Rn,#data 立即数送入寄存器8 MOV direct,A 累加器内容送入直接地址单元9 MOV direct,Rn 寄存器内容送入直接地址单元10 MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元11 MOV direct,@Ri 间接RAM 中的数据送入直接地址单元12 MOV direct,#data 立即数送入直接地址单元13 MOV @Ri,A 累加器内容送间接RAM 单元14 MOV @Ri,direct 直接地址单元数据送入间接RAM 单元15 MOV @RI,#data 立即数送入间接RAM 单元16 MOV DRTR,#dat16 16 位立即数送入地址寄存器17 MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器18 MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器19 MOVX A,@Ri 外部RAM(8 位地址)送入累加器20 MOVX A,@DPTR 外部RAM(16 位地址)送入累加器21 MOVX @Ri,A 累计器送外部RAM(8 位地址)22 MOVX @DPTR,A 累计器送外部RAM(16 位地址)23 PUSH direct 直接地址单元中的数据压入堆栈24 POP direct 弹栈送直接地址单元25 XCH A,Rn 寄存器与累加器交换26 XCH A,direct 直接地址单元与累加器交换27 XCH A,@Ri 间接RAM 与累加器交换28 XCHD A,@Ri 间接RAM 的低半字节与累加器交换算术操作类指令:1 ADD A,Rn 寄存器内容加到累加器2 ADD A,direct 直接地址单元的内容加到累加器3 ADD A,@Ri 间接ROM 的内容加到累加器4 ADD A,#data 立即数加到累加器5 ADDC A,Rn 寄存器内容带进位加到累加器6 ADDC A,direct 直接地址单元的内容带进位加到累加器7 ADDC A,@Ri 间接ROM 的内容带进位加到累加器8 ADDC A,#data 立即数带进位加到累加器9 SUBB A,Rn 累加器带借位减寄存器内容10 SUBB A,direct 累加器带借位减直接地址单元的内容11 SUBB A,@Ri 累加器带借位减间接RAM 中的内容12 SUBB A,#data 累加器带借位减立即数13 INC A 累加器加114 INC Rn 寄存器加115 INC direct 直接地址单元加116 INC @Ri 间接RAM 单元加117 DEC A 累加器减118 DEC Rn 寄存器减 1 1 1219 DEC direct 直接地址单元减120 DEC @Rj 间接RAM 单元减121 INC DPTR 地址寄存器DPTR 加122 MUL AB A 乘以B,结果放在A23 DIV AB A 除以B,结果放在A24 DA A 累加器十进制调整布尔变量操作类指令:1 CLR C 清进位位2 CLR bit 清直接地址位3 SETB C 置进位位4 SETB bit 置直接地址位5 CPL C 进位位求反6 CPL bit 置直接地址位求反7 ANL C,bit 进位位和直接地址位相“与”8 ANL C,bit 进位位和直接地址位的反码相“与”9 ORL C,bit 进位位和直接地址位相“或”10 ORL C,bit 进位位和直接地址位的反码相“或”11 MOV C,bit 直接地址位送入进位位12 MOV bit,C 进位位送入直接地址位13 JC rel 进位位为 1 则转移14 JNC rel 进位位为0 则转移15 JB bit,rel 直接地址位为 1 则转移16 JNB bit,rel 直接地址位为0 则转移17 JBC bit,rel 直接地址位为 1 则转移,该位清零逻辑操作数指令:1 ANL A,Rn 累加器与寄存器相“与”2 ANL A,direct 累加器与直接地址单元相“与”3 ANL A,@Ri 累加器与间接RAM 单元相“与”4 ANL A,#data 累加器与立即数相“与”5 ANL direct,A 直接地址单元与累加器相“与”6 ANL direct,#data 直接地址单元与立即数相“与”7 ORL A,Rn 累加器与寄存器相“或”8 ORL A,direct 累加器与直接地址单元相“或”9 ORL A,@Ri 累加器与间接RAM 单元单元相“或”10 ORL A,#data 累加器与立即数相“或”11 ORL direct,A 直接地址单元与累加器相“或”12 ORL direct,#data 直接地址单元与立即数相“或”13 XRL A,Rn 累加器与寄存器相“异或”14 XRL A,direct 累加器与直接地址单元相“异或”15 XRL A,@Ri 累加器与间接RAM 单元单元相“异或”16 XRL A,#data 累加器与立即数相“异或”17 XRL direct,A 直接地址单元与累加器相“异或”18 XRL direct,#data 直接地址单元与立即数相“异或”19 CLR A 累加器清“0”20 CPL A 累加器求反21 RL A 累加器循环左移22 RLC A 累加器带进位位循环左移23 RR A 累加器循环右移24 RRC A 累加器带进位位循环右移25 SWAP A 累加器半字节交换控制转移类指令:1 ACALL addr11 绝对(短)调用子程序2 LCALL addr16 长调用子程序3 RET 子程序返回4 RETI 中数返回5 AJMP addr11 绝对(短)转移6 LJMP addr16 长转移7 SJMP rel 相对转移8 JMP @A+DPTR 相对于DPTR 的间接转移9 JZ rel 累加器为零转移10 CJNE rel 累加器非零转移11 CJNE A,direct,rel 累加器与直接地址单元比较,不相等则转移12 CJNE A,#data,rel 累加器与立即数比较,不相等则转移13 CJNE Rn,#data,rel 寄存器与立即数比较,不相等则转移14 CJNE @Ri,#data,rel 间接RAM 单元与立即数比较,不相等则转移15 DJNZ Rn,rel 寄存器减1,非零转移16 DJNZ direct,erl 直接地址单元减1,非零转移17 NOP 空操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
清直接寻址位
2
1
SETB
C
置位进位位
1
1
SETB
bit
置位直接寻址位
2
1
CPL
C
取反进位位
1
1
CPL
bit
取反直接寻址位
2
1
ANL
C,bit
直接寻址位“与”到进位位
2
2
ANL
C,/bit
直接寻址位的反码“与”到进位位
2
2
ORL
C,bit
直接寻址位“或”到进位位
2
2
ORL
C,/bit
直接寻址位的反码“或”到进位位
1
1
RR
A
累加器循环右移
1
1
RRC
A
带进位累加器循环右移
1
1
SWAP
A
累加器高、低4 位交换
1
1
(控制转移类指令)
JMP
@A+DPTR
相对DPTR 的无条件间接转移
1
2
JZ
rel
累加器为0 则转移
2
2
JNZ
rel
累加器为1 则转移
2
2
CJNE
A,direct,rel
比较直接地址和累加器,不相等转移
3
2
1
XRL
A,@Ri
间接RAM“异或”到累加器
1
1
XRL
A,#data
立即数“异或”到累加器
2
1
XRL
direct,A
累加器“异或”到直接地址
2
1
XRL
direct, #data
立即数“异或”到直接地址
3
1
CLR
A
累加器清零
1
2
CPL
A
累加器求反
1
1
RL
A
累加器循环左移
1
1
RLC
A
带进位累加器循环左移
寄存器与累加器求和
1
1
ADD
A,direct
直接地址与累加器求和
2
1
ADD
A,@Ri
间接RAM 与累加器求和
1
1
ADD
A,#data
立即数与累加器求和
2
1
ADDC
A,Rn
寄存器与累加器求和(带进位)
1
1
ADDC
A,direct
直接地址与累加器求和(带进位)
2
1
ADDC
A,@Ri
间接RAM 与累加器求和(带进位)
2
CJNE
A,#data,rel
比较立即数和累加器,不相等转移
3
2
CJNE
Rn,#data,rel
比较寄存器和立即数,不相等转移
2
2
CJNE
@Ri,#data,rel
比较立即数和间接RAM,不相等转移
3
2
DJNZ
Rn,rel
寄存器减1,不为0 则转移
3
2
DJNZ
direct,rel
直接地址减1,不为0 则转移
1
1
ADDC
A,#data
立即数与累加器求和(带进位)
2
1
SUBB
A,Rn
累加器减去寄存器(带借位)
1
1
SUBB
A,direct
累加器减去直接地址(带借位)
2
1
SUBB
A,@Ri
累加器减去间接RAM(带借位)
1
1
SUBB
A,#data
累加器减去立即数(带借位)
2
1
(逻辑运算类指令)
ANL
A,Rn
寄存器“与”到累加器
助记符
指令说明
字节数
周期数
(数据传递类指令)
MOV
A,Rn
寄存器传送到累加器
1
1
MOV
A,direct
直接地址传送到累加器
2
1
MOV
A,@Ri
累加器传送到外部RAM(8 地址)
1
1
MOV
A,#data
立即数传送到累加器
2
1
MOV
Rn,A
累加器传送到寄存器
1
1
MOV
Rn,direct
直接地址传送到寄存器
Bit
片内RAM 中的可寻址位和SFR 的可寻址位
Direct
直接地址,范围片内RAM 单元(00H-7FH)和80H-FFH
$
指本条指令的起始位置
2
2
(伪指令)
ORG
指明程序的开始位置
DB
定义数据表
DW
定义16 位的地址表
EQU
给一个表达式或一个字符串起名
DATA
给一个8 位的内部RAM 起名
XDATA
给一个8 位的外部RAM 起名
BIT
给一个可位寻址的位单元起名
END
指出源程序到此为止
(指令中的符号标识)
Rn
工作寄存器R0-R7
Ri
工作寄存器R0 和R1
2
2
MOV
Rn,#data
累加器传送到直接地址
2
1
MOV
direct,Rn
寄存器传送到直接地址
2
1
MOV
direct,direct
直接地址传送到直接地址
3
2
MOV
direct,A
累加器传送到直接地址
2
1
MOV
direct,@Ri
间接RAM 传送到直接地址
2
2
MOV
direct,#data
立即数传送到直接地址
1
2
MOVX
A,@Ri
外部RAM(8 地址)传送到累加器
1
2
MOVX
A,@DPTR
外部RAM(16 地址)传送到累加器
1
2
MOVX
@Ri,A
累加器传送到外部RAM(8 地址)
1
2
MOVX
@DPTR,A
累加器传送到外部RAM(16 地址)
1
2
PUSH
direct
直接地址压入堆栈
2
2
POP
direct
直接地址弹出堆栈
直接地址“或”到累加器
2
1
ORL
A,@Ri
间接RAM“或”到累加器
1
1
ORL
A,#data
立即数“或”到累加器
2
1
ORL
direct,A
累加器“或”到直接地址
2
1
ORL
direct, #data
立即数“或”到直接地址
3
1
XRL
A,Rn
寄存器“异或”到累加器
1
2
XRL
A,direct
直接地址“异或”到累加器
2
2
MOV
C,bit
直接寻址位传送到进位位
2
1
MOV
bit, C
进位位位传送到直接寻址
2
2
JC
rel
如果进位位为1 则转移
2
2
JNC
rel
如果进位位为0 则转移
2
2
JB
bit,rel
如果直接寻址位为1 则转移
3
2
JNB
bit,rel
如果直接寻址位为0 则转移
3
2
JBC
bit,rel
直接寻址位为1 则转移并清除该位
3
2
MOV
@Ri,A
直接地址传送到直接地址
1
2
MOV
@Ri,direct
直接地址传送到间接RAM
2
1
MOV
@Ri,#data
立即数传送到间接RAM
2
2
MOV
DPTR,#data16
16 位常数加载到数据指针
3
1
MOVC
A,@A+DPTR
代码字节传送到累加器
1
2
MOVC
A,@A+PC
代码字节传送到累加器
1
1
ANL
A,direct
直接地址“与”到累加器
2
1
ANL
A,@Ri
间接RAM“与”到累加器
1
1
ANL
A,#data
立即数“与”到累加器
2
1
ANL
direct,A
累加器“与”到直接地址
2
1
ANL
direct, #data
立即数“与”到直接地址
3
2
ORL
A,Rn
寄存器“或”到累加器
1
2
ORL
A,direct
间接RAM 加1
1
1
INC
DPTR
数据指针加1
1
2
DEC
A
累加器减1
1
1
DEC
Rn
寄存器减1
1
1
DEC
direct
直接地址减1
2
2
单片机汇编指令一览表
作者:乡下人
DEC
@Ri
间接RAM 减1
1
1
MUL
AB
累加器和B 寄存器相乘
1
4
DIV
AB
累加器除以B 寄存器
1
4
DA