单片机汇编指令大全

合集下载

单片机指令大全

单片机指令大全

单片机指令大全
单片机指令大全是一种汇编语言和机器语言结合的指令集,它在微处理器内部执行,包括算术运算指令、数据传送指令、控制流指令、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位地址;此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。

单片机指令表(最全)

单片机指令表(最全)

单片机指令以A开头的指令有18条,分别为:1、ACALL addr11指令名称:绝对调用指令指令代码:A10 A9 A8 10001 A7 A6 A5 A4 A3 A2 A1 A0指令功能:构造目的地址,进行子程序调用。

其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。

操作容:PC←(PC)+2SP←(SP)+1(SP)←(PC)7~0SP←(SP)+1(SP)←(PC)15~8PC10~0←addrl0~0字节数: 2机器周期:2使用说明:由于指令只给出子程序入口地址的低11位,因此调用围是2KB。

2、ADD A,Rn指令名称:寄存器加法指令指令代码:28H~2FH指令功能:累加器容与寄存器容相加操作容:A←(A)+(Rn), n=0~7字节数: 1机器周期;1影响标志位:C,AC,OV3、ADD A,direct指令名称:直接寻址加法指令指令代码:25H指令功能:累加器容与部RAM单元或专用寄存器容相加操作容:A←(A)+(direct)字节数: 2机器周期:1影响标志位:C,AC,OV4、ADD A,@Ri ’指令名称:间接寻址加法指令指令代码:26H~27H指令功能:累加器容与部RAM低128单元容相加操作容:A←(A)+((Ri)), i=0,1字节数: 1机器周期:1影响标志位:C,AC,OV5、ADD A,#data指令名称:立即数加法指令指令代码:24H指令功能:累加器容与立即数相加操作容:A←(A)+data字节数: 2机器周期:1影响标志位:C,AC,OV6、ADDC A,Rn指令名称:寄存器带进位加法指令指令代码:38H~3FH指令功能:累加器容、寄存器容和进位位相加操作容:A←(A)+(Rn)+(C), n=0~7字节数: 1 机器周期:1 影响标志位:C,AC,OV7、ADDC A,direct指令名称:直接寻址带进位加法指令指令代码:35H指令功能:累加器容、部RAM低128单元或专用寄存器容与进位位加操作容:A←(A)+(direct)+(C)字节数: 2机器周期:1影响标志位:C,AC,OV8、ADDC A,@Ri指令名称:间接寻址带进位加法指令指令代码:36H~37H指令功能:累加器容, 部RAM低128单元容与进位位相加操作容:A←(A)+((Ri))+(C), i=0,1字节数: 1机器周期:1影响标志位:C,AC,OV9、ADDC A,#data指令名称:立即数带进位加法指令指令代码:34H指令功能:累加器容、立即数与进位位相加操作容:A←(A)+data+(C)字节数: 2机器周期:1影响标志位:C,AC,OV10、AJMP addr11指令名称:绝对转移指令指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,实现程序转移。

单片机汇编语言经典一百例

单片机汇编语言经典一百例

单片机汇编语言经典一百例汇编语言是一种底层的程序设计语言,是一种将汇编指令直接翻译成机器指令的语言。

在单片机编程中,掌握汇编语言是非常重要的,因为它可以充分发挥单片机的性能,并且提高程序的运行效率。

本文将介绍一百个经典的单片机汇编语言例子,帮助读者更好地理解汇编语言的使用。

1. 点亮LED灯```ORG 0x0000 ; 程序起始地址MOV P1, #0xAA ; P1口输出高电平,LED灯点亮END ; 程序结束```2. LED流水灯效果```ORG 0x0000 ; 程序起始地址MOV P1, #0x01 ; P1口输出低电平,第一个LED点亮CALL DELAY ; 调用延时函数MOV P1, #0x02 ; P1口输出低电平,第二个LED点亮CALL DELAY ; 调用延时函数MOV P1, #0x04 ; P1口输出低电平,第三个LED点亮CALL DELAY ; 调用延时函数MOV P1, #0x08 ; P1口输出低电平,第四个LED点亮CALL DELAY ; 调用延时函数…DELAY: ; 延时函数MOV R0, #100 ; 设置延时时间DELAY_LOOP:DJNZ R0, DELAY_LOOP ; 循环减一RET ; 返回END ; 程序结束```3. 数码管动态扫描显示```ORG 0x0000 ; 程序起始地址CLR P0.0 ; P0.0口输出低电平,选择第一个数码管MOV P2, #0x7E ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数CLR P0.1 ; P0.1口输出低电平,选择第二个数码管MOV P2, #0x30 ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数CLR P0.2 ; P0.2口输出低电平,选择第三个数码管MOV P2, #0x6D ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数CLR P0.3 ; P0.3口输出低电平,选择第四个数码管MOV P2, #0x79 ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数…DELAY: ; 延时函数MOV R0, #100 ; 设置延时时间DELAY_LOOP:DJNZ R0, DELAY_LOOP ; 循环减一RET ; 返回END ; 程序结束```...通过以上例子,我们可以看到单片机汇编语言的应用非常广泛,可以实现各种各样的功能。

单片机汇编指令

单片机汇编指令

单片机汇编指令单片机汇编指令:为解决某些特定的问题代码中必须嵌入汇编语言以代替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 则转移,该位清零。

汇编指令大全+很全的汇编指令

汇编指令大全+很全的汇编指令

for Addition)
1. 调整操作如下
格式: DAA
(1) 若(AL) and 0FH>9 或 AF=1
,则(AL)<--(AL)+6,AF<--1,对低
功能: 对AL中的两个组合进制数相加的结果进行调 四位的调整.
整,调整结果仍放在AL中,进位标志放在CF中.
(2) 若(AL) and 0F0H>90H 或
6 LAHF 标志传送指令 LAHF 格式: LAHF
2. 本指令不影响状态标位,表格 长度不超过256字节.
说明: 该指令不影响FLAG的原来 内容,AH只是复制了原FLAG的低8 位内容.
功能: 取FLAG标志寄存器低8位至AH寄存器.(AH)<-
-(FLAG)7~0
7 SAHF 标志传送指令 SAHF
说明:
格式: DEC OPRD 功能: OPRD<--OPRD-1
1. OPRD 为寄存器或存储器操作 数.
2. 这条指令执行结果影响AF、 OF、PF、SF、ZF标志位,但不影 响CF标志位.
页码,4/22
星尘-易尘
302 NEG 303 CMP
304 AAS 305 DAS 306 MUL
取补指令 NEG(NEGate)
未组合的十进制加法调整指令 AAA(ASCII Adgust 说明:
for Addition)
1. 组合的十进制数和未组合的
格式: AAA
十进制数:在计算中,十进制数可
用四位二进制数编码,称为BCD
功能: 对两个组合的十进制数相加运算(存在AL中) 码.
的结果进行调整,产生一个未组合的十进制数放在
AX中.
SUB [BX+25],AX
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机汇编指令一览表
作者:乡下人
DEC @Ri 间接RAM 减1 1 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 2
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 1 RLC 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 2 JNB 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-R7
Ri 工作寄存器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
$ 指本条指令的起始位置。

相关文档
最新文档