单片机的指令表(最全)
MCS-51单片机指令表

MCS-51单片机指令表序号__-__-__年__-__序号__-__附录1MCS-51单片机指令表数据传送类指令指令格式指令功能字节MOVA,RnRn内容传送到A1MOVA,direct 直接地址内容传送到A2MOVA,@Ri间接RAM单元内容送A1MOVA,#data立即数送到A2MOVRn,AA内容送到Rn1MOVRn,direct直接地址内容传送到Rn2MOVRn,#data立即数传送到Rn2MOVdirect,AA传送到直接地址2MOVdirect,RnRn传送到直接地址2MOVdirect2,直接地址传送到直接地址3direct1MOVdirect,@Ri间接RAM内容传送到直接地址2MOVdirect,#data立即数传送到直接地址3MOV@Ri,AA内容送间接RAM单元1MOV@Ri,direct直接地址传送到间接__@Ri,#data立即数传送到间接__CA,@A+DPTR代码字节送A(DPTR为基址)1MOVCA,@A+PC代码字节送A(PC为基址)1MOVXA,@Ri外部RAM(8地址)内容传送到A1MOVXA,@DPTR外部RAM内容(16地址)传送到A1__,#data1616位常数加载到数据指针1MOVX@Ri,AA内容传送到外部RAM(8地址)1MOVX@DPTR,AA内容传送到外部RAM(16地址)1PUSHdirect直接地址压入堆栈2POPdirect直接地址弹出堆栈2XCHA,RnRn内容和A交换1XCHA,direct直接地址和A交换2XCHA,@Ri间接RAM内容A交换1XCHDA,@Ri间接RAM内容和A交换低4位字1节算术运算类指令指令格式指令功能字节INCAA加11INCRnRn加11INCdirect直接地址加12INC@Ri间接RAM加11__数据指针加11DECAA减11DECRnRn减11DECdirect直接地址减12周期__-__-__-__1111周期__-____-__年__序号__-__-__年__-__DEC@Ri__DDA,RnADDA,directADDA,@RiADDA,#dataADDCA,RnADDCA,di rectADDCA,@RiADDCA,#dataSUBBA,RnSUBBA,directSUBBA,@RiSUBBA,#d ata间接RAM减1A和BRn相乘A除以BRnA十进制调整Rn与A求和直接地址与A求和间接RAM与A求和立即数与A求和Rn与A求和(带进位)直接地址与A求和(带进位)间接RAM与A求和(带进位)立即数与A 求和(带进位)A减去Rn(带借位)A减去直接地址(带借位)A减去间接RAM(带借位)A减去立即数(带借位)逻辑运算类指令指令格式指令功能ANLA,RnRn“与”到AANLA,direct直接地址“与”到AANLA,@Ri间接RAM“与”到AANLA,#data立即数“与”到AANLdirect,AA“与”到直接地址ANLdirect,#data立即数“与”到直接地址ORLA,RnRn“或”到AORLA,direct直接地址“或”到AORLA,@Ri间接RAM“或”到AORLA,#data 立即数“或”到AORLdirect,AA“或”到直接地址ORLdirect,#data立即数“或”到直接地址XRLA,RnRn“异或”到AXRLA,direct直接地址“异或”到AXRLA,@Ri间接RAM“异或”到AXRLA,#data立即数“异或”到AXRLdirect,AA“异或”到直接地址XRLdirect,#data立即数“异或”到直接地址CLRAA清零CPLAA求反RLAA循环左移RLCA带进位A循环左移RRAA循环右移RRCA带进位A 循环右移SWAPAA高、低4位交换1__-__-__字节__-__-__-__1__周期__-__-__-__1序号__-__-__-__7序号__-__-__-__7指令格式JMP@A+DPTRJZrelJNZrelCJNEA,direct,relCJNEA,#data,relCJNERn,#data,relCJNE@Ri,#data,relDJNZRn,relDJNZdirect,relNOPACALLadd11LCALLadd16__AJMPadd11LJMPadd16SJMPrel指令格式__bit__TBbit__bitANLC,bitANLC,/bitORLC,bitORLC,/bitMOVC,bitMOVbit,CJCrelJNCrelJBbit,relJNBbit,relJBCbit,rel 伪指令控制转移类指令指令功能相对DPTR的无条件间接转移A为0则转移A为1则转移比较直接地址和A,不相等转移比较立即数和A,不相等转移比较Rn和立即数,不相等转移字节__周期__-__-__2周期__-__-__2比较立即数和间接RAM,不相等转3移Rn减1,不为0则转移2直接地址减1,不为0则转移3空操作,用于短暂延时1绝对调用子程序2长调用子程序3从子程序返回1从中断服务子程序返回1无条件绝对转移2无条件长转移3无条件相对转移2 位操作指令指令功能字节清进位位1清直接寻址位2置位进位位1置位直接寻址位2取反进位位1取反直接寻址位2直接寻址位“与”到进位位2直接寻址位的反码“与”到进位位2直接寻址位“或”到进位位2直接寻址位的反码“或”到进位位2直接寻址位传送到进位位2进位位位传送到直接寻址2如果进位位为1则转移2如果进位位为0则转移2如果直接寻址位为1则转移3如果直接寻址位为0则转移3直接寻址位为1则转移并清除该3位指令中的符号标识__TEND$指明程序的开始位置定义数据表定义16位的地址表RnRi@Ri工作寄存器R0-R7工作寄存器R0和R1间接寻址的8位RAM单元地址(00H-FFH)8位常数16位目标地址,范围64KB11位目标地址,范围2KB8位偏移量,范围-128~+127片内RAM中的可寻址位和SFR的可寻址位直接地址,范围片内RAM单元(00H-7FH)和80H-FFH给一个表达式或一个字符串#data8起名给一个8位的内部RAM起名addr16给一个8位的外部RAM起名addr11给一个可位寻址的位单元起。
C51单片机指令集大全

精心整理格式功能简述字节数周期一、数据传送类指令MOVA,Rn寄存器送累加器11MOVRn,A累加器送寄存器11MOVA,@Ri内部RAM单元送累加器11MOVXA,@DPTR外部RAM单元送累加器(16位地址)12MOVX@DPTR,A累加器送外部RAM单元(16位地址)12MOVCA,@A+DPTR查表数据送累加器(DPTR为基址)12MOVCA,@A+PC查表数据送累加器(PC为基址)12XCHA,Rn累加器与寄存器交换11XCHA,@Ri累加器与内部RAM单元交换11XCHDA,direct累加器与直接寻址单元交换21 XCHDA,@Ri累加器与内部RAM单元低4位交换11 SWAPA累加器高4位与低4位交换11POPdirect栈顶弹出指令直接寻址单元22 PUSHdirect直接寻址单元压入栈顶22二、算术运算类指令SUBBA,@Ri累加器减内部RAM单元和进位标志11 SUBBA,#data累加器减立即数和进位标志21 SUBBA,direct累加器减直接寻址单元和进位标志21 DECA累加器减111DECRn寄存器减111DEC@Ri内部RAM单元减111DECdirect直接寻址单元减121MULAB累加器乘寄存器B14DIVAB累加器除以寄存器B14三、逻辑运算类指令ANLA,Rn累加器与寄存器11ANLA,@Ri累加器与内部RAM单元11XRLdirect,#data直接寻址单元异或立即数32 RLA累加器左循环移位11RLCA累加器连进位标志左循环移位11RRA累加器右循环移位11RRCA累加器连进位标志右循环移位11CPLA累加器取反11CLRA累加器清零11四、控制转移类指令类ACCALLaddr112KB范围内绝对调用22 AJMPaddr112KB范围内绝对转移22 LCALLaddr162KB范围内长调用32 LJMPaddr162KB范围内长转移32MOVbit,CC送直接寻址位21 CLRCC清零11CLRbit直接寻址位清零21CPLCC取反11CPLbit直接寻址位取反21 SETBCC置位11SETBbit直接寻址位置位21ANLC,bitC逻辑与直接寻址位22ANLC,/bitC逻辑与直接寻址位的反22ORLC,bitC逻辑或直接寻址位22ORLC,/bitC逻辑或直接寻址位的反22JCrelC为1转移22MOVA,#0FFHMOVP1,#0FFH;开始时全灭;-------------------------------逐个点亮MOVR2,#8LOOP1:CLRCRLCAMOVP1,ACALLDL500MSDJNZR2,LOOP1CALLDL500MS;0.5sDJNZR2,LOOP3;------------------------------- DJNZR3,LOOP0MOVP1,#01001001B;5、显示为01001001 CALLDL500MSCALLDL500MS;共1sSJMP0000H;重新开始N遍;-------------------------------延时子程序。
单片机汇编语言指令查表

目录表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时,操作数由端口锁存器读入。
8051单片机常用指令

8051单⽚机常⽤指令3.2.1数据传送与交换类指令共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为⽬的的操作数的指令;访问外部RAM的指令;读程序存储器的指9.堆栈操作3.2 分类指令在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。
Rn:当前指定的⼯作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。
Ri:当前指定的⼯作寄存器组中的RO,R1(其中i=0,1)。
(Ri):Ri间址寻址指定的地址单元。
((Ri)):Ri间址寻址指定地址单元中的内容。
dir:8位直接字节地址(在⽚内RAM和SFR存储空间中)。
#data8:8位⽴即数。
#datal6:16位⽴即数。
addrl6:16位地址值。
addrll:11位地址值。
bit:位地址(在位地址空间中)。
rel:相对偏移量(⼀字节补码数)。
下⾯介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。
3.2.1数据传送与交换类指令共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为⽬的的操作数的指令;访问外部RAM的指令;读程序存储器的指令;数据交换指令以及准栈操作指令。
9.堆栈操作PUSH dir ;SP⼗1-6P,(dir)⼀(SP)POP dir ;((SP))⼀dir,SP-1--P ,例1 SP=07H,(35H)=55H,指令PUSH 35H执⾏后,55H送⼊08H地址单元,SP=08H。
例2 SP=13H,(13H)= 1FH,指令POP 25H执⾏后,1FH压⼊25H地址单元,SP此时为12H。
综合例把⽚内RAM中50H地址单元中的内容与40H地址单元中的内容互换。
⽅法⼀(直接地址传送法):MOV A ,50H数据传送与交换类指令是各类指令中数量最多、使⽤最频繁的⼀类指令,编程时应能⼗分熟练地灵活运⽤3.2.2算术运算类指令共有24条指令,主要包括加、减、乘、除、增量、减量和⼗进制调整等指令。
第9章 单片机的指令系统说明

计算机总是把操作数当作有符号数(补码形式)看待 并影响PSW的相关标志位。影响情况如下: 进位/借位标志CY: 两数和的D7位有进位时,(CY)=1,否则,(CY)=0。 半进位/借位标志AC: 两数和的D3位有进位时,(AC)=1,否则,(AC)=0。 溢出标志OV: 两数和的D7,D6位只有一位有进位时,(OV)=1;否则, (OV)=0,即OV=C6⊕C7。 奇偶标志P: 当累加器A中“1”的个数为奇数时,(P)=1;为偶数 时(P)=0。
例2 把片外RAM的36H单元中的数据送到片外RAM的 1200H单元。 〈分析〉(36H)→(1200H) 程序如下: MOV R1,#36H MOVX A ,@R1 MOV DPTR,#1200H MOVX @DPTR, A <想一想>下面的程序可以实现吗? MOV DPTR, #1200H MOV R1,#36H MOV @DPTR,@R1 注意:片外RAM之间不能直接传送数据,必须经过累加器 A
例5 试分析8051单片机执行下述指令后,累加器A和PSW各标 志位的变化。 MOV A,#0A5H ADD A,#0CFH 解: (A)=10100101B + Data=11001111B CY 01110100B C7 C6 AC (CY)=C7=1;(AC)=1;溢出标志(OV)=C7⊕C6=1⊕0=1,有 溢出;(P)=0。执行结果:(A)=74H。 若为无符号数运算, (CY)=1,表示结果超出(0~255) 范围。若为带符号数运算,因(-49)+(-91)=-140,超出了 (-128~+127)的范围,所以OV=1溢出。
半字节交换 XCHD A,@Ri SWAP A
;(A3~0)((Ri)3~0) ;(A3~0)(A7~4)
51单片机汇编指令大全

51汇编指令大全Rn: 表示当前寄存器区的8个工作寄存器R0~R7Ri: 表示当前寄存器区的R0或R1,可作地址指针即间址寄存器(i=0或1)@: 为间接寄存器或基址寄存器的前缀.Direct: 表示8位内部数据存储单元的地址.它可以是内部RAM的单元地址0~127.特殊功能寄存器SFR的地址(128~255)或名称,A: 累加器ACC.B: .特殊功能寄存器B,用于MUL和DIV指令中.C: 进位位Cy.#data: 表示包含在指令中的单字节(8位)立即数.如果用16位进制表示,后缀字母为”H”,数据范围00~0FFH,不得一字母开头;如果用16进制表示无须任何后缀,但必须在0~255之间.#data16: 表示包含在指令中的双字节(16位)立即数.Adda16: 表示16位的目的地址.用于LCALL和LJMP指令中,目的地址范围是从0000H~FFFFH的整个64KB存储地址空间.Adda11: 表示11位的目的地址.用于ACALL和AJMP的指令中,目的地址必须和下一条指令第一个字节同处一页.Rel: 表示8位带符号的相对偏移量.用语SJMP和所有的条件转移指令中.偏移量相对于下一条指令的第一个字节计算,在-128~+127范围内取值.DPTR: 为数据指针,可用作16位的地址寄存器./: 加在位操作的前面,表示对该位进行非运算.bit: 表示内部可寻址位或特殊功能寄存器中的直接寻址位.“(x): 寄存器或地址单元中的内容.((x)): 有x见解寻址的单元中的内容.<-: 表示将箭头右边的内容传送至箭头的左边.$: 当前指令的地址.单片机指令系统(一) 内部数据传送指令(1) 以累加器A为目的的传送指令:MOV A, #data ;(A)<-dataMOV A, direct ;(A)<-(direct)MOV A, Rn ;(A)<-(Rn)MOV A, @Ri ;(A)<- ((Ri))(2) 以通用寄存器Rn为目的的传送指令:MOV Rn, A ;(Rn)<-(A)MOV Rn, direct ; (Rn)<(direct)-MOV Rn, #data: ; (Rn)<-(data)(3) 以直接地址为目的的传送指令:MOV direct, A ;(direct)<-(A)MOV direct, Rn ; (direct)<-(Rn)MOV direct, direct2 ; (direct)<-(direct2)MOV direct, @Ri ; (direct)<-((Rn))MOV direct, #data ; (direct)<-data(4) 以寄存器间接地址为目的的传送指令:MOV @Ri, A ;((Ri))<-(A)MOV @Ri, direct ;((Ri))<-(direct)MOV @Ri, #data ;((Ri))<-data(二) 数据指针赋值指令(16位数据传送指令)MOV DPTR, #data16;(三) 片外数据传送指令MOVX A, @Ri ;(A)<-((Ri))片外MOVX A, @DPTR ;(A)<-((DPTR))片外MOVX @Ri, A ;((Ri))片外<-(A)MOVX @DPTR, A ;((DPTR))片外<-(A)(四) ROM数据访问指令(查表指令)MOVC A, @A+DPTR ;(A)<-((A)+(DPTR))romMOVC A, @A+PC ;(PC)<-(PC)+1,(A)<-((A)+(PC))rom (五) 堆栈操作指令PUSH direct ;(SP)<-(SP)+1,(SP)<-(direct)堆栈指针先加1,将数据压入栈顶POP direct ;(direct)<-(SP),(SP)<-(SP)-1将数据从栈顶弹出存入direct,SP再减1(六) 数据交换指令(1)整字节(8位)交换指令:XCH A, Rn ;A和Rn中的数互换XCH A, direct ;A和direct单元中的数互换XCH A, @Ri ;A和Ri间址单元中的数互换(2)半字节交换指令:XCHD A, @Ri ;A的低4位Ri间接单元的低4位互换,高4位不动(3)累加器高低半字节交换指令:SWAP A, ;A的高4位(D7~D4)和低4位(D3~D0)互换(七) 加法指令(1)不带Cy加法指令:ADD A, Rn ;(A)<-(A)+(Rn)ADD A, direct ; (A)<-(A)+(direct)ADD A, @Ri ; (A)<-(A)+((Ri))ADD A, #data ; (A)<-(A)+data(2)带进位加法指令:ADDC A, Rn ;(A)<-(A) +Cy+(Rn)ADDC A, direct ; (A)<-(A) +Cy+(direct)ADDC A, @Ri ; (A)<-(A) +Cy+((Ri))ADDC A, #data ; (A)<-(A) +Cy+data(3)加1指令:INC A, ;(A)<-(A)+1INC Rn ;(Rn)<-(Rn)+1INC @Ri ;((Ri))<-((Ri))+1INC direct ;(direct)<-(direct)+1INC DPTR ;(FPTR)<-(DPTR)+1(八) 减法指令(1)带进位减法指令:SUBB A, Rn ;(A)<-(A) -Cy-(Rn)SUBB A, direct ; (A)<-(A) -Cy-(direct)SUBB A, @Ri ; (A)<-(A) -Cy-((Ri))SUBB A, #data ; (A)<-(A) -Cy-data(2)减1指令:DEC A ;(A)<-(A)-1DEC direct ;(direct)<-(durect)-1DEC Rn ;(Rn)<-(Rn)-1DEC @Ri ;((Ri))<-((Ri))-1(九) 乘除指令(1)乘法指令MUL AB ;(B)(A)<-(A)*(B)指令功能是把累加器A和特殊功能寄存器B中两个8位无符号整数相乘,并把积的高8位字节存入B寄存器,低8位字节存入累加器A.(2)除法指令DIV AB ;A/B,商存入A,余数存入B指令的功能是把累加器A中的8位无符号整数除以寄存器B中的8位无符号整数商的整数部分存入累加器A中,余数保留在B中.(十) 十进制调整指令DA A(十一) 逻辑运算指令(1) 逻辑与运算指令:ANL A, Rn ;(A)<-(A)∧(Rn)ANL A, direct ; (A)<-(A)∧(direct)ANL A, @Ri ; (A)<-(A)∧((Ri))ANL A, #data ; (A)<-(A)∧dataANL direct, A ;(direct)<-(A)∧(direct)ANL direct, #data;(direct<-(direct)∧data(2) 逻辑或运算指令:ORL A, Rn ;(A)<-(A)∨(Rn)ORL A, direct ; (A)<-(A)∨(direct)ORL A, @Ri ; (A)<-(A)∨((Ri))ORL A, #data ; (A)<-(A)∨dataORL direct, A ;(direct)<-(A)∨(direct)ORL direct, #data; (direct)<-(direct)∨data(3) 逻辑异或运算指令:XRL A, Rn ;(A)<-(A)⊙(Rn)XRL A, direct ; (A)<-(A)⊙(direct)XRL A, @Ri ; (A)<-(A)⊙((Ri))XRL A, #data ; (A)<-(A)⊙dataXRL direct, A ;(direct)<-(A)⊙(direct)XRL direct, #data; (direct)<-(direct)⊙data(4) 累加器清0和去反指令CLR A ;(A)<-0 (累加器清0指令)CLR A ;(A)<-(A) (累加器取反指令)(5) 累加器移位指令:不带进位Cy循环左移: RL A ;Dn+1<-Dn,D0<-D7D7D6D5D4D3D2D1D0不带进位Cy循环右移: RR A :Dn+1->Dn,D0<-D7D7D6D5D4D3D2D1D0带进位Cy循环左移: RLC A ;Cy<-D7,Dn+1<-Dn,D0<-CyD7D6D5D4D3D2D1D0带进位Cy循环右移: RRC A ;Cy->D7,Dn+1->Dn,D0->Cy(十二) 控制转移指令[1] 无条件转移指令:(1) 长转移指令LJMP addr16 ;(PC)<-addr16(2) 绝对转移指令AJMP addr11 ;(PC)<-(PC)+2,(PC)10~0<-addr11(3) 短转移指令SJMP rel ;(PC)<-(PC)+2+rel(4) 变址寻址转移指令JMP @A+DPTR ;(PC)<-(A)+(DPTR)[2] 条件转移指令:(1) 累加器判0转移指令:JZ rel ;如果(A)=0,跳转到目标语句,否则顺序执行JNZ rel ;如果(A)≠0,跳转到目标语句,否则顺序执行(2) 比较转移指令:CJNZ A, #data, rel ;如果(A)≠data,则跳转到目标语句,否则程序顺序执行CJNZ A direct, rel ; 如果(A)≠(direct),则跳转到目标语句,否则程序顺序执行CJNZ Rn #data, rel ; 如果(A)≠data,则跳转到目标语句,否则程序顺序执行CJNZ @Ri #data, rel ; 如果(A)≠data,则跳转到目标语句,否则程序顺序执行(3) 循环控制转移指令:DJNZ Rn, rel ;(Rn)先减1,如减1后(Rn)≠0,则跳转到目标语句;否则顺序执行DJNZ firect, rel ; (direct)先减1,如减1后(direct)≠0,则跳转到目标语句;否则顺序执行(十三) 子程序调用和返回指令(1) 绝对调用指令:ACALL addr11(2) 长调用指令:LCALL addr16(3) 返回指令:RET 子程序返回RETI 中断服务程序返回(十四) 空操作指令NOP 空操作指令是一条特殊指令,单片机在执行该指令时不进行任何操作,只是消耗1个机器周期的时间,所以该指令长用于延时程序.软件陷阱程序等(十五) 位操作类指令(1) 位传送指令:MOV C,bit ;(Cy)<-(bit),bit位的状态不变MOV bit,C ; (bit) <- (Cy),Cy位的状态不变(2) 位置位和复位指令:SETB C ;(Cy)<-1SETB bit ;(bit)<-1CLR C ;(Cy)<-0CLR bit ;(bit)<-0(3) 位运算指令:ANL C,bit ;(Cy)<-(Cy)∧(bit),Cy位和bit位相与,结果赋给Cy ANL C,/bit ;(Cy)<-(Cy)∧(bit),Cy位和bit位相与,结果赋给CyORL C,bit ;(Cy)<-(Cy)∨(bit),Cy位和bit位相或,结果赋给Cy ORL C,/bit ;(Cy)<-(Cy) ∨(bit),Cy位和bit位相或,结果赋给CyCPL C ; (Cy)<-(Cy),Cy位取反CPL bit ;(bit)<-(bit),bit位取反(4) 位测试转移指令:(1) 以Cy位状态为条件的转移指令JC rel ;如果Cy位=1,跳转到目标语句,否则顺序执行JNC rel ;如果Cy位=0,跳转到目标语句,否则顺序执行(2) 以指定位状态为条件的转移指令:JB bit, rel ;如果bit=1,跳转到目标语句,否则顺序执行JNB bit, rel ;如果bit=0,跳转到目标语句,否则顺序执行JBC bit, rel ;如果bit=1,跳转到目标语句,同时将bit位清0;否则顺序执行。
MCS-51单片机的指令
MCS-51单⽚机的指令MCS-51单⽚机的指令⼀.数据传送类指令(29条).1 通⽤传送指令(16条)格式:MOV ⽬的操作数,源操作数功能:把第⼆操作数指定的字节内容传送到第⼀操作数指定的单元中。
不影响源操作数内容,不影响别的寄存器和标志。
根据⽬的操作数的不同,通⽤传送指令⼜分为以下⼏种类型:1.1 以累加器A为⽬的操作数的传送类指令(4条)指令助记符及功能说明如下:⽬的操作数源操作数功能说明源操作数寻址⽅式MO V A, direct ;(A)←(direct)直接寻址MO V A, @Ri ;(A)←((Ri))寄存器间接寻址MO V A, Rn ;(A)←(Rn)寄存器寻址MO A, #data ;(A)←data ⽴即寻址V这类指令的功能是将源操作数送到⽬的操作数A中。
指令执⾏后的结果:除了奇偶标志P始终跟踪A中数据的奇偶性外,不影响PSW中的其他标志位。
1.2 以Rn为⽬的操作数的传送类指令(3条)指令助记符及功能说明如下:⽬的操作数源操作数功能说明源操作数寻址⽅式MOVRn, A ;(Rn)←(A) 寄存器寻址MO V Rn, direct ;(Rn)←(direct)其中,Rn是R0,…,R7中的任意⼀个。
例1 若(A)=20H,则执⾏指令MOV R3, A后,(R3)=20H。
注意:Rn寄存器之间不能直接传送数据。
如指令“MOV R1, R7”是错误的。
该类指令执⾏后,不影响PSW中的标志位。
1.3. 以直接地址directX为⽬的操作数的传送类指令(5条)指令助记符及功能说明如下:⽬的操作数源操作数功能说明源操作数寻址⽅式M OV directX, A ;(directX)←(A)寄存器寻址M directX, Rn ;(directX)←寄存器寻址OV (Rn)M OV directX, directY ;(directX)←(directY)直接寻址M OV directX, @Ri ;(directX)←((Ri))寄存器间接寻址M OV directX, #data ;(directX)←data⽴即寻址这类指令的功能是把源操作数的内容送到直接地址directX中去。
单片机MC51指令表
MCS-51单片机操作数共有5种操作数1、立即数( 常数) #data 例 #20、#14H 、#00010100B2、寄存器 R0~R7、 A 、 B 、 DPTR 等3、存储器4、位操作数5、相对转移地址 relMCS-51单片机操作数1、立即数(常数)操作数 #data例 #20、#14H 、#00010100B例:1)、 MOV A , #14H2)、 MOV R0, #20称为立即数寻址方式2、寄存器操作数 R0~R7、 A 、 B 、 DPTR(1)4组通用工作寄存区共32个工作寄存器。
(2)部分特殊功能寄存器,例如A 、B 以及数据指针寄存器DPTR 等。
例: 1)、 MOV A , R12)、 MOV R5, #00010100B3)MOV DPTR, #1000H称为寄存器寻址方式3、存储器操作数 片内RAM 器 片外RAM ROM片内RAM 器片外RAMROM1)、片内RAM表示方法a、直接地址表示00H~7FH、80H~FFH中21个SFR例MOV A , 30HMOV A , P1 或MOV A , 90H称为直接寻址方式b、寄存器间接地址表示为@R0 、@R1例MOV A , @R1 (假设R1=0030H)称为寄存器间接寻址方式2)、片外RAM表示方法(只能寄存器间接表示)a、8位寄存器间接地址表示为@R0、@R1例MOVX A , @R0 (假设R0=0040H)b、16位寄存器间接地址表示为@DPTR例MOVX A , @DPTR (假设DPTR=1020H) 称为寄存器间接寻址方式3)、ROM表示方法(只能寄存器间接表示)@A+PC、@A+DPTRCPU对ROM的访问用MOVC指令格式1:MOVC A , @A+DPTR格式2:MOVC A , @A+PC格式2: JMP @A+DPTR其中@A+DPTR 与@A+PC表示ROM中某个单元称为基址寄存器加变址寄存器寻址方式4 位操作数位操作数为片内RAM的位寻址区20H~2FH( 位地址00~7FH)及特殊功能寄存器中的可寻址位。
51系列单片机指令系统
MOV DPTR,#1000H MOVX A,@DPTR INC DPTR, MOVX @DPTR,A 7、程序存储器向累加器A传送指令 MOVC A,@A+DPTR MOV DPTR,#100H MOV A,R0 MOVC A,@A+DPTR ORG 0100H. DB 0,1,4,9,16,25 8、堆栈操作指令 PUSH direct POP direct 第一条指令称之为入栈指令,就是将direct中的内容 送入堆栈中,第二条指令称之为弹出指令,就是将堆栈 中的内容送回到direct中。
位寻址时,操作数是二进制数的某一位,其位地 址出现在指令中,例如指令 • SETB bit ;(bit) ← l • 51系列单片机可用于位寻址的空间是内部RAM的可 位寻址区和SFR区中的字节地址可以被8整除(即地址以 “0”或“8”结尾)的寄存器所占空间,寻址方式如表 2-2所示。
表2-2 寻址方式一览表
寻 址 方 式
寻 址 范 围
R0-R7 ,DPTR ACC,B,C(CY位)
内部RAM 00H-7FH 特殊功能寄存器 80H-FFH 内部RAM位寻址区 (20H-2FH): 位地址00H-7FH 可寻址的特殊功能寄存器: 位地址 80H-F7H 以数据指针表示操作数 内部RAM 00H-7FH 外部RAM或I/O端口 00H-FFH / 0000H-FFFFH
图2-3 寄存器间接寻址
图2-4 立即寻址
4、立即寻址
•
立即寻址时,指令中直接给出操作数。例如指令 MOV A,#76H ;数据76H送累加器 A。 • 立即数寻址过程如图2-4所示。
5、变址寻址
•
变址寻址时,指定的变址寄存器的内容与指令中 给出的偏移量相加,所得的结果作为操作数的地址。 例如指令MOVC A, @A+DPTR ;((A)+(DPTR))送 A。变址寻址过程如图2-5所示。 不论用DPTR或PC作为基址指针,变址寻址方式都 只适用于51系列单片机的程序存储器,通常用于读取 数据表也就是将程序存储器中的数送入A中。因此也称 为查表指令,常用此指令来查一个已做好在程序存储 器中的表格,这条指令采用变址寻址。
51单片机汇编指令总结
51单片机汇编指令总结数据传输指令一.片内ram数据传输指令1.以累加器a为目的操作数的指令:mova,rnmova,directmova,@rimova,#data2.以寄存器rn为目的操作数的指令:movrn,amovrn,directmovrn,data3.以轻易地址为目的操作数的指令:movdirect,amovdirect,rnmovdirect1,derect2movdirect,@rimovdirect,#data4.间接地址为目的操作数的指令:mov@ri,amov@ri,directmov@ri,#data5.十六位数据传送指令:movdptr,#data16二.累加器a与片外ram数据传输指令:movxa,@rimovxa,@dptrmovx@ri,amovx@dptr,a三.换算串行:movca,@a+dptr(先pc←(pc)+1,后a←((a)+(dptr)))+movca,@a+pc(先pc←(pc)+1,后a←((a)+(pc)))四.互换指令:1.字节交换指令:xcha,rnxcha,directxcha,@ri2.半字节交换指令:xchda,@ri3.累加器半字节交换指令:swapa五.栈操作指令:1.push(入栈指令)pushdirect2.pop(出栈指令)popdirect算术运算指令:一.乘法加法指令:1.加法指令:adda,rnadda,directadda,@riadda,#data2.拎位次乘法指令:addca,rna←(a)+(rn)+cyaddca,directa←(a)+(direct)+cyaddca,@ria←(a)+((ri))+cyaddca,#dataa←(a)+(data)+cy3.带借位减法指令:subba,rna←(a)-cy-(rn)subba,directa←(a)-cy-(direct)subba,@ria←(a)-cy-((ri))subba,#dataa←(a)-cy-#data二.乘法乘法指令:1.乘法指令:mulabba←(a)×(b)高字节放到b中,低字节放到a中2.乘法指令:divaba←(a)÷(b)的商,(b)←(a)÷(b)的余数三.加1减1指令:1.提1指令:incaa←(a)+1incrnrn←(rn)+1incdirectdirect←(direct)+1inc@ri(ri)←((ri))+1incdptrdptr←(dptr)+12.减至1指令:decadecrndecdirectdec@ri四.十进制调制指令:daa调整累加器a的内容为bcd码逻辑操作方式指令:一.逻辑与、或、异或指令:1.逻辑与指令:anla,rnanla,directanla,@rianla,#data2.逻辑或这而令:orla,rnorla,directorla,@riorla,#dataorldirect,aorldirect,#data3.逻辑异或指令:xrla,rnxrla,directxrla,@rixrla,#dataxrldirect,axrldirect,#data二.清零、row指令:1.累加器a清零指令:crla2.累加器arow指令:cpla三.循环位移指令:1.累加器a循环左移指令:rla2.累加器a循环右移指令:rra3.累加器a连同进位位循环左移指令:rlca4.累加器a连同进位位循环右移指令:rrca控制转移指令:一.无条件迁移指令:1.绝对转移指令:ajmpaddr11(先pc+2,然后将addr11的高十位托付给pc,pc的高六位维持不变)2.长转移指令:ljmpaddr16(用addr16的值替代pc的值)3.相对迁移(长迁移)指令:sjmprel(带符号的偏移字节数)(pc+2,再加rel赋值给pc)4.间接转移指令:jmp@a+dptr(a)+(dptr)→(pc)二.条件转移指令:1.累加器判零迁移指令:jzrel先pc+2;后判断,a为0时转移,pc+rel赋值给pc;否则顺序继续执行jnzrel先pc+2,后判断,a不为0时转移,pc+rel赋值给pc;否则顺序执行2.比较转移指令:cjne目的操作数,源操作数,relcjnea,direct,rel先pc+3传回pc,再比较目的操作数和原操作数cjnea,#data,rel目>源时,程序转移,pc+rel传回pc且cy=0cjnern,#data,rel目=源时,程序顺序执行cjne@ri,#data,rel目djnzrn,rel先pc\\+2,rn-1,当rn为0时程序顺序继续执行,否则pc+rel传到pcdjnzdirect,rel先pc+3,direct-1,direct为0时程序顺序继续执行,否则pc+rel传到pc二.子程序调用、返回指令:1.绝对调用指令acall:acalladdr11先pc+2,sp+1将pc的低八位存入sp;sp+1,将pc的高八位取走sp。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机的指令表(最全)
单片机的指令表(最全)
在单片机编程中,指令表是编程过程中不可或缺的重要参考资料。
它包含了单片机的指令集,能够帮助程序员清晰地了解和使用不同的指令,以实现特定的功能。
本文将为您详细介绍单片机的指令表,包括指令的分类、常用指令的功能及应用示例。
1. 指令表的分类
单片机的指令表根据指令的功能和执行方式进行分类。
常见的分类方式有:数据传送指令、算数运算指令、逻辑运算指令、条件跳转指令和无条件跳转指令等。
1.1 数据传送指令
数据传送指令用于在寄存器之间传送数据,常见的指令有MOV、LDA、STA等。
例如,MOV指令可以将数据从一个寄存器传送到另一个寄存器。
1.2 算数运算指令
算数运算指令用于进行加法、减法、乘法和除法等数值计算操作,常见的指令有ADD、SUB、MUL、DIV等。
例如,ADD指令可以将两个寄存器中的数据相加,并将结果保存在目标寄存器中。
1.3 逻辑运算指令
逻辑运算指令用于进行逻辑运算,包括与、或、非、异或等操作,常见的指令有AND、OR、NOT、XOR等。
例如,AND指令可以对两个寄存器中的数据进行与运算,并将结果保存在目标寄存器中。
1.4 条件跳转指令
条件跳转指令用于根据特定条件改变程序的执行流程,常见的指令有JZ、JNZ、JC、JNC等。
例如,JZ指令可以在累加器为零时跳转到指定的地址。
1.5 无条件跳转指令
无条件跳转指令用于无条件地改变程序的执行流程,常见的指令有JMP、CALL、RET等。
例如,JMP指令可以跳转到指定的地址执行程序。
2. 常用指令的功能及应用示例
2.1 MOV指令
功能:将一个寄存器或内存的数据传送到另一个寄存器或内存。
示例:
MOV A, B ; 将寄存器B的值传送给A
MOV R1, #10 ; 将立即数10传送给寄存器R1
2.2 ADD指令
功能:将两个寄存器或内存中的数据相加,并将结果保存在目标寄存器或内存中。
示例:
ADD A, B ; 将A和B的值相加,并将结果保存在A中
ADD R3, #5 ; 将寄存器R3的值加上立即数5
2.3 AND指令
功能:对两个寄存器或内存中的数据进行逻辑与运算,并将结果保存在目标寄存器或内存中。
示例:
AND A, B ; 对A和B的值进行与运算,并将结果保存在A中
AND R2, #0F ; 将寄存器R2的值与立即数0F进行与运算
2.4 JZ指令
功能:若累加器为零,则跳转到指定的地址。
示例:
JZ Label1 ; 若累加器为零,则跳转到Label1处执行
2.5 JMP指令
功能:无条件跳转到指定的地址。
示例:
JMP Label2 ; 无条件跳转到Label2处执行
以上仅是单片机指令表中部分常用指令的功能及应用示例,实际的
指令表更为详尽。
在使用指令表时,程序员可以根据具体的需求选择
合适的指令,并合理组合使用,以实现所需的功能。
总结:
单片机的指令表是单片机编程中非常重要的参考资料,它包含了不
同功能的指令及其应用示例。
程序员通过熟悉指令表,可以清晰地了
解和使用各种指令,提高编程的效率和准确性。
在编写单片机程序时,合理选择指令,并注意指令的正确使用,能够使程序更加稳定和高效
运行。
因此,学习和掌握单片机的指令表对于单片机编程具有重要意义。
(以上正文没有额外的标题或者其他冗余内容,符合排版整洁美观
的要求)。