指令助记符、名称
- 格式:doc
- 大小:128.50 KB
- 文档页数:4
令集(共31条)rt <- rs + (zero-extend)immediate ;其中 rt=$1js=$2 rt <- rs & (zero-extend)i mmedi ate ;其中 rt=$1js=$2 rt <- rs | (zero-extend)immedi ate ;其中 rt=$1js=$2 rt <- rs xor (zero-extend)i mmedi ate ;其 中 rt=$1,rs=$2 rt <- immediate*65536 ;将16<^即数 放到目标寄存器高16 位,目标寄存器的低16©填0rt <- memory[rs + (sign- exteiKl)immediate] ; rt=$1,rs=$2 memory[rs + (sign-extend)immediate] <- rt ; rt=$1,rs=$2 if (rs == rt) PC <- PC+4 + (sign- extend)immediate«2 if (rs != rt) PC <- PC+4 + (sign- extend)immediate«2 if (rs <(sign -extend)immediate) rt=1 else rt=O ; 其中 rs = $2 , rt=$1 if (rs <(zero-extend)i mmedi ate) rt=1 else rt=O ;其中 rs = $2, rt=$1 PC <- (PC+4)[3L28],address,0,0 ; address=10000/4 $31 <-PC+4 ; PC <- (PCM)[31 _28],address 旦 0;address=10000/4 immediate immediate if($2<10)$1=1 else000010 address 000011 address memory[$2+10] =$1注意:为MIPS16只有16个1過的寄存器.所以JAL 指令中$31改成S15,所有立即数均无需扩展,LUI 指令直接就是将立即数付始RTS 存既 immediate immediate immediate immediate immediate immediate immediate addiu $1,52,100 $1=$2+100 andi $1,$2,10 $1=$2 &10 andi $1=$2|10 andi $1=$2A 10 lw$1,10($2) sw$1,10($2) beq$1,$2,10 bne$1,$2,10 if($2<10)slti$1,$2,10goto 10000 $31<-PC+4;goto 10000$1=memory[$2+10]if($1 !=$2) gotoPC+4+40if($1==$2) gotoPC+4+40$1=100*65536。
MCS-51的基本指令共111条;按功能分为5类:(1)数据传送(29条)(2)算术操作(24条)(3)逻辑操作(24条)(4)控制转移(17条)(5)布尔变量操作(17条)按指令所占的字节来分:(1) 单字节指令49条;(2) 双字节指令46条;(3) 三字节指令16条。
数据传送指令(29条)按指令的执行时间来分:(1) 1个机器周期(12个时钟振荡周期)指令64条;(2) 2个机器周期(24个时钟振荡周期)指令45条;(3) 只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。
12MHz晶振:机器周期为1μs。
向累加器A的传送:MOV A, Rn ;(A)←(Rn)向通用寄存器传送:MOV Rn, A ;(Rn)←(A)向直接地址传送:MOV direct,A ;(direct)←(A)间址传送:MOV @Ri,A ;((Ri))←(A)入栈指令:PUSH direct ;(sp)←(sp)+1,;((sp))←(direct)出栈指令:POP direct ;(direct)←((sp)),;(sp)←(sp)-1累加器传送指令字节交换指令:XCH A,Rn ;(A)↔(Rn)半字节交换指令:XCHD A,@Ri ; (A0~3) ↔((Ri) 0~3)累加器高4位与低4位数据互换:SWAP A ;(A0~3) ↔(A4~7)累加器与外部RAM的传送:MOVX A,@Ri ;(A) ←((Ri))累加器与程序存储器传送:MOVC A,@A+DPTR目标地址传送指令:MOV DPTR,#data16算术运算指令(24条)加法指令:ADD A,Rn ;(A) ←(A)+(Rn)带进位加法:ADDC A,Rn ;(A) ←(A)+(Rn)+(C)加1指令:INC A ;(A) ←(A)+1十进制调整指令:DA A ;减法指令:带借位减法指令:SUBB A,Rn;(A) ←(A)-(Rn)-(C)减1指令:DEC A ;(A) ←(A)-1乘法指令:MUL AB;(BA) ←(A)*(B)除法指令:DIV AB ;(A) ←(A)/(B); (B) ←(A)%(B)单操作数逻辑运算指令累加器A清零:CLR A ;(A) ←0累加器A取反:CPL A ;(A) ←(A)累加器A循环左移:RL A;累加器A循环右移: RR A;累加器A带进位循环左移:RLC A;累加器A带进位循环右移:RRC A;双操作数逻辑运算指令逻辑“与”指令:ANL A, Rn ;(A) ←(A)&(Rn)逻辑“或”指令:ORL A, Rn ;(A) ←(A)|(Rn)“异或”指令:XRL A, Rn ;(A) ←(A)^(Rn)控制转移指令(17条)1无条件转移指令调用指令绝对调用(2K)ACALL addr11;(pc) ←(pc+2);(sp) ←(sp)+1,((sp)) ←(pc0~7);(sp) ←(sp)+1,((sp)) ←(pc8~15);(pc0~10) ← addr0~10;(pc11~15)不变长调用(64K)LCALL addr16;(pc) ←(pc)+3;(sp) ← (sp)+1,((sp)) ←(pc0~7);(sp) ← (sp)+1,((sp)) ←(pc8~15);(pc) ← addr16返回指令子程序返回(ACALL和LCALL)RET;(pc8~15) ←((sp)),(sp) ←(sp)-1;(pc0~7) ←((sp)),(sp) ←(sp)-1中断程序返回RETI;(pc8~15) ←((sp)),(sp) ←(sp)-1;(pc0~7) ←((sp)),(sp) ←(sp)-1 ;开放中断逻辑转移指令绝对转移AJMP addr11;(pc0~10) ← addr0~10;(pc11~15)不变长转移:LJMP addr16;(pc) ← addr16相对转移(短转移,双向)SJMP rel ;(pc) ←(pc)+rel间接转移指令(散转指令)JMP @A+DPTR ;(pc)←(A)+(DPTR)空操作指令:NOP ;(pc) ←(pc)+1条件转移指令(1)判零转移指令JZ rel;当(A)为0则(pc) ←(pc)+rel ;否则,顺序执行JNZ rel;当(A)非0,则(pc) ←(pc)+rel;否则,顺序执行比较转移指令(-128B~+127B)CJNE A,direct,rel跳转循环指令(减1不为0转移指令):DJNZ Rn,rel ;(Rn) ←(Rn)-1,;若(Rn)非0,则(pc) ←(pc)+rel;否则,顺序执行DJNZ direct,rel;(direct) ←(direct)-1,;若(direct)非0,则(pc) ←(pc)+rel;否则,顺序执行布尔处理器指令(17条)位变量地址空间片内低RAM,Bit地址范围:00H~7FH(128位)片内高RAM,地址能被8整除的SFR中对应各位(11个):80H~F7H布尔数据传送指令:MOV C ,bit ;(C) ←(bit)※C为进位标志位Cy(不影响PSW)布尔状态控制位清“0”指令CLR C ;(C) ← 0位置“1”指令:SETB C ;(C) ← 1位取反指令:CPL C ;(C) ← (C)位逻辑运算位逻辑“与”指令:ANL C,bit ;(C) ← (C)&(bit)位逻辑“或”指令:ORL C,bit ;(C) ← (C)|(bit)位条件转移指令:判断C转移:J C rel;当(C)为1,则(pc) ←(pc)+rel;否则,顺序执行JNC rel;当(C)为0,则(pc) ←(pc)+rel;否则,顺序执行判断位变量转移指令:JB bit, rel;当(bit)为1,则(pc) ←(pc)+rel;否则,顺序执行JNB bit, rel;当(bit)为0,则(pc) ←(pc)+rel;否则,顺序执行※pc+rel中,(pc)表示为当前的指令地址即:执行跳转指令后的下一条指令地址判断位变量转移并清0指令:JBC bit, rel ;当(bit)为1,则(bit)←0,(pc) ←(pc)+rel ;否则,顺序执行※可用于对SFR的bit检测和软件复位(TFX)汇编语言语句的种类和格式:程序段说明伪指令ORG ORG 1000H汇编结束伪指令END [标号:] END伪指令语句等值伪指令EQU和DL DDR EQU 1020H(不可改)数据说明伪指令DB和DW TAB DB 0, 4, 8, 16, 32保留存储区说明伪指令:STA DS 10H软件延时子程序DELAY:MOV R2, #data ;指令周期数=1DELAY1: DJNZ R2, DELAY1;指令周期数=2RET延时时间=1(第一条指令周期)+(R2)×2(周期数); 影响CPU工作效率延时范围:3~513个机器周期,由(R2)决定有符号数X存于内部RAM的DATA单元,Y存于FUNC单元,按以下要求编程实现给Y赋值。
详解PLC编程跳转指令的使用方法条件跳转指令:指令名称,助记符,指令代码,程序步如下表:程序步可以是连续执行或者是脉冲执行,CJ执行的为3步,CJ(P)为1步。
指令格式:当我们按下X000后,程序跳转指令开始运行,程序所跳转的位置为程序指针所在的位置,也就是标号10,在这里我们要注意程序指针写在左母线的左边。
当我们启动跳转指令后,X001这段程序就会被跳过不执行。
当X0为ON时,被跳转CJ命令到标号之间的程序不子执行。
在跳转过程中如果Y、M,S被OUT、SET. (RS)T指令驱动使输入发生变化则仍保持跳转前的状态。
例如,通过X1驱动输出Y10后发生跳转,在跳转过程中即使X0变为ON,但输出Y10仍有效。
注意:1、对于T、C,如果跳转时(定时器)或计数器正发生动作,则此时立即中断计数或停止计时,直到跳转结束后继续进行计时或计数。
但是,正在动作的定时器T192~T199与高速计数器C235~ C255. 不管有无跳转仍旧维续工作。
2、功能指令在跳转时不执行,但PLSY、PLSR、PWW指令除外。
子程序调用与返回指令:指令名称,助记符,指令代码,程序步如下表:指令格式:图中FEND表示主程序结束,在FEND前面的我们称为主程序,在FEND后面的我们称为子程序。
SRET表示子程序结束,或者叫子程序返回。
我们要注意,在FEND与SRET之间的程序,我们称为第一个子程序,在第二个SRET之前的我们称为第二个子程序。
当我们按下X001的时候,指针调用到P11,程序开始从P11这个地方从上往下开始执行,当碰到第一个SRET的时候,程序又返回到主程序中,但是在这个程序中如果X002被接通,那么程序指针则调用到P12,程序开始从上到下运行,当碰到第二个SRET的时候,程序返回到P12这个地方,然后在碰到第一个SRET的时候,返回到主程序。
因为P12这个程序是嵌套在P11这个程序中的,所以我们要注意,在(PLC)中这种程序嵌套最多只能使用5级。
80X86 汇编指令符号大全+、-、*、/∶算术运算符。
&∶宏处理操作符。
宏扩展时不识别符号和字符串中的形式参数,如果在形式参数前面加上一个& 记号,宏汇编程序就能够用实在参数代替这个形式参数了。
$∶地址计数器的值——记录正在被汇编程序翻译的语句地址。
每个段均分配一个计数器,段内定义的所有标号和变量的偏移地址就是当前汇编地址计数器的值。
?∶操作数。
在数据定义语句中,操作数用?,其作用是分配并保留存储空间,但不存入确定的数据。
=∶等号伪指令——符号定义。
对符号进行定义和赋值,功能与EQU相似,但允许(重复)再定义。
:∶修改属性运算符(操作符)——段操作符。
用来临时给变量、标号或地址表达式指定一个段属性(不用缺省的段寄存器),自动生成一个“跨段前缀字节”。
注意,段寄存器CS和ES 不能被跨越,堆栈操作时也不能跨越SS。
;∶注释符号。
%∶特殊宏操作符,用来将其后的表达式(通常是符号常数,不能是变量名和寄存器名)转换成它所代表的数值,并将此数值的ASCII码嵌入到宏扩展中。
( )∶1.运算符——用来改变运算符的优先级别。
2.教材符号,表示括号内存储单元(或寄存器)的内容。
< >∶宏调用时用来将带间隔符(如空格,逗号等)的字符串(作为实参)括起来。
[ ]∶1.运算符。
方括号括起来的数是数组变量的下标或地址表达式。
带方括号的地址表达式必须遵循下列原则,①只有BX、BP、SI、DI这四个寄存器可在方括号内出现;②BX或BP 可单独出现在各方括号中,也可以与常数、SI或DI一起出现在方括号内,但不允许BX和BP出现在同一个方括号内;③SI和DI可以单独出现在各方括号内,也可以与常数、BP或BX一起出现在方括号内,但不允许SI和DI出现在同一个方括号内;④一个方括号内包含多个寄存器时,它们只能作加法运算;⑤若方括号内包含基址指针BP,则隐含使用堆栈段寄存器SS提供段基址,否则均隐含使用数据段寄存器DS提供段基址。
助记符号的记忆方法1表格列举法把44个指令助记符按功能分为五类,每类列表记忆。
此处从略,请读者自己总结。
2英文还原法单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。
例如:增量 INC-Incremect减量 DNC-Decrement短转移 SJMP-Short jump长转移 LJMP-Long jump比较转移 CJNE-Compare jump not equality绝对转移 AJMP-Absolute jump空操作 NOP-No operation交换 XCH-Exchange加法ADD-Addition乘法 MUL-Multiplication除法 DIV-Division左环移 RL-Rotate left进位左环移 RLC-Rotate left carry右环移 RR-Rotate right进位右环移RRC-Rotate right carryMCS-51系列单片机指令解读:18条以A字母开头的单片机的指令10条以C字母开头的单片机的指令8条以D字母开头的单片机的指令5条以I字母开头的单片机的指令8条以J字母开头的单片机的指令2条以L字母开头的单片机的指令24条以M字母开头的单片机的指令1条以N字母开头的单片机的指令8条以O字母开头的单片机的指令2条以字母P开头的单片机的指令6条以字母R开头的单片机的指令8条以字母S开头的单片机的指令18个以A字母开头的MCS-51系列单片机的指令1、ACALL addr11指令名称:绝对调用指令指令代码:指令功能:构造目的地址,进行子程序调用。
其方法是以指令提供的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。
我现将指令系统中各种助记符的英文全名写出来,各种助记符的记忆就会变得很简单o(∩_∩)o...在这之前,先说一下寄存器:数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.DH&DL=DX(data):数据寄存器,常用于数据传递。
他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。
这2组8位寄存器可以分别寻址,并单独使用。
另一组是指针寄存器和变址寄存器,包括:SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置;BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于 ES 段之目的变址指针。
指令指针IP(Instruction Pointer)标志寄存器FR(Flag Register)OF(overflow flag)DF(direction flag)CF(carrier flag)PF(parity flag)AF(auxiliary flag)ZF(zero flag)SF(sign flag)IF(interrupt flag)TF(trap flag)段寄存器(Segment Register)为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。
(指令中的符号标识)Rn工作寄存器R0-R7Ri工作寄存器R0和R1@Ri间接寻址的8位RAM单元地址(00H-FFH)#data88位常数#data1616位常数addr1616位目标地址,能转移或调用到64KROM的任何地方addr1111位目标地址,在下条指令的2K范围内转移或调用Rel8位偏移量,用于SJMP和所有条件转移指令,范围-128~+127 Bit片内RAM中的可寻址位和SFR的可寻址位Direct直接地址,范围片内RAM单元(00H-7FH)和80H-FFH$指本条指令的起始位置指令序号助记符指令功能字节周期对标志位的影响P OV AC CY8位立即数传送指令1MOV A,#data data→A立即数传送到累加器211000 2MOV diret,#data data→direct立即数传送到直接地址320000 3MOV@Ri,#data data→(Ri)立即数传送到间接RAM210000 4MOV Rn,#data data→Rn累加器传送到直接地址21000016位立即数传送指令5MOV DPTR,#data16data16→DPTR16位常数加载到数据指针320000内部RAM单元之间的数据传送指令6MOV direct2,direct1(direct1)→direct2直接地址传送到直接地址320000 7MOV direct,@Ri((Ri))→direct间接RAM传送到直接地址220000 8MOV direct,Rn(Rn)→direct寄存器传送到直接地址220000 9MOV@Ri,direct(direct)→(Ri)直接地址传送到间接RAM220000 10MOV Rn,direct(direct)→Rn直接地址传送到寄存器220000通过累加器的数据传送指令11MOV A,direct(direct)→A直接地址传送到累加器210000 12MOV A,@Ri((Ri))→A累加器传送到外部RAM(8地址)110000 13MOV A,Rn(Rn)→A寄存器传送到累加器110000 14MOV direct,A(A)→direct累加器传送到直接地址210000 15MOV@Ri,A(A)→(Ri)直接地址传送到直接地址110000 16MOV Rn,A(A)→Rn累加器传送到寄存器110000Ri作间址寄存器的外部RAM单元读/写指令17MOVX A,@Ri((Ri))→A外部RAM(8地址)传送到累加器120000 18MOVX@Ri,A(A)→(Ri)累加器传送到外部RAM(8地址)120000DPTR作间址寄存器的外部RAM单元读/写指令19MOVX A,@DPTR((DPTR))→A外部RAM(16地址)传送到累加器120000 20MOVX@DPTR,A(A)→(DPTR)累加器传送到外部RAM(16地址)120000程序存储器读指令组21MOVC A,@A+DPTR((A)+(DPTR))→A代码字节传送到累加器121000 22MOVC A,@A+PC((A)+(PC))→A代码字节传送到累加器121000整字节交换指令23XCH A,Rn(Rn)↔(A)寄存器和累加器交换111000 24XCH A,direct(direct)↔(A)直接地址和累加器交换211000 25XCH A,@Ri((Ri))↔(A)间接RAM和累加器交换111000半字节交换指令26XCHD A,@Ri((Ri))3~0↔(A)3~0间接RAM和累加器交换低4位字节111000累加器高低半字节交换指令27SWAP A(A)3~0↔(A)7~4累加器高、低4位交换110000堆栈操作指令组28PUSH direct(SP)+1→SP,(direct)→(SP)直接地址压入堆栈220000 29POP direct((SP))→direct,(SP)-1→SP直接地址弹出堆栈220000加法指令组30ADD A,#data(A)+data→A立即数与累加器求和211111 31ADD A,direct(A)+(direct)→A直接地址与累加器求和211111 32ADD A,@Ri(A)+((Ri))→A间接RAM与累加器求和111111 33ADD A,Rn(A)+(Rn)→A寄存器与累加器求和111111带进位加法指令组34ADDC A,#data(A)+data+(CY)→A立即数与累加器求和(带进位)211111 35ADDC A,direct(A)+(direct)+(CY)→A直接地址与累加器求和(带进位)211111 36ADDC A,@Ri(A)+((Ri))+(CY)→A间接RAM与累加器求和(带进位)111111 37ADDC A,Rn(A)+(Rn)+(CY)→A寄存器与累加器求和(带进位)111111带借位减法指令组38SUBB A,#data(A)-data-(CY)→A累加器减去立即数(带借位)211111 39SUBB A,direct(A)-(direct)-(CY)→A累加器减去直接地址(带借位)211111 40SUBB A,@Ri(A)-((Ri))-(CY)→A累加器减去间接RAM(带借位)111111 41SUBB A,Rn(A)-(Rn)-(CY)→A累加器减去寄存器(带借位)111111加1指令组42INC A(A)+1→A累加器加1111000 43INC direct(direct)+1→direct直接地址加1210000 44INC@Ri((Ri))+1→(Ri)间接RAM加1110000 45INC Rn(Rn)+1→Rn寄存器加1110000 46INC DPTR(DPTR)+1→DPTR数据指针加1120000减1指令组47DEC A(A)-1→A累加器减1111000 48DEC direct(direct)-1→direct直接地址减1210000 49DEC@Ri((Ri))-1→(Ri)间接RAM减1110000 50DEC Rn(Rn)-1→Rn寄存器减1110000乘法指令51MUL AB(A)×(B)→BA累加器和B寄存器相乘141101除法指令52DIV AB(A)/(B)→A……B累加器除以B寄存器141111十进制调整指令53DA A BCD码加减运算结果修正累加器十进制调整111011逻辑“与”运算指令组54ANL direct,A(direct)^(A)→direct累加器“与”到直接地址210000 55ANL direct,#data(direct)^data→direct立即数“与”到直接地址320000 56ANL A,#data(A)^data→A立即数“与”到累加器210000 57ANL A,direct(A)^(direct)→A直接地址“与”到累加器210000 58ANL A,@Ri(A)^((Ri))→A间接RAM“与”到累加器110000 59ANL A,Rn(A)^(Rn)→A寄存器“与”到累加器111000逻辑“或”运算指令组60ORL direct,A(direct)U(A)→direct累加器“或”到直接地址210000 61ORL direct,#data(direct)Udata→direct立即数“或”到直接地址320000 62ORL A,#data(A)Udata→A立即数“或”到累加器211000 63ORL A,direct(A)U(direct)→A直接地址“或”到累加器211000 64ORL A,@Ri(A)U((Ri))→A间接RAM“或”到累加器111000 65ORL A,Rn(A)U(Rn)→A寄存器“或”到累加器111000逻辑“异或”运算指令组66XRL direct,A(direct)○+(A)→direct累加器“异或”到直接地址220000 67XRL direct,#data(direct)○+data→direct立即数“异或”到直接地址320000 68XRL A,#data(A)○+data→A立即数“异或”到累加器211000 69XRL A,direct(A)○+(direct)→A直接地址“异或”到累加器211000 70XRL A,@Ri(A)○+((Ri))→A间接RAM“异或”到累加器111000 71XRL A,Rn(A)○+(Rn)→A寄存器“异或”到累加器111000累加器清072CLR A0→A累加器清零111000累加器取反73CPL A(A)→A累加器求反110000移位指令组74RL A An→An+1,A7→A0累加器循环左移110000 75RR A An+1→An,A0→A7累加器循环右移110000 76RLC A An→An+1,A7→CY,CY→A0带进位累加器循环左移110000 77RRC A An+1→An,CY→A7,A0→CY带进位累加器循环右移111001长转移指令64KB78LJMP addr16addr16→PC无条件长转移320000绝对转移指令2KB79AJMP addr11(PC)+2→PC,addr11→PC10~0无条件绝对转移220000短转移指令256B80SJMP rel(PC)+2→PC,(PC)+rel→PC无条件相对转移220000变址寻址转移指令81JMP@A+DPTR(A)+(DPTR)→PC相对DPTR的无条件间接转移120000累加器判零转移指令82JZ rel若(A)=0,则(PC)+2+rel→PC若(A)≠0,则(PC)+2→PC累加器为0则转移220000 83JNZ rel若(A)≠0,则(PC)+2+rel→PC若(A)=0,则(PC)+2→PC累加器为1则转移220000数值比较转移指令84CJNE A,#data,rel(A)=data,则(PC)+3→PC,0→CY(A)>data,(PC)+3+rel→PC,0→CY(A)<data,(PC)+3+rel→PC,1→CY比较立即数和累加器,不相等转移320000 85CJNE A,direct,rel(A)=(direct),则(PC)+3→PC,0→CY(A)>(direct),(PC)+3+rel→PC,0→CY(A)<(direct),(PC)+3+rel→PC,1→CY比较直接地址和累加器,不相等转移320000数值比较转移指令86CJNE Rn,#data,rel(Rn)=data,则(PC)+3→PC,0→CY(Rn)>data,(PC)+3+rel→PC,0→CY(Rn)<data,(PC)+3+rel→PC,1→CY比较寄存器和立即数,不相等转移320000 87CJNE@Ri,#data,rel((Ri))=data,则(PC)+3→PC,0→CY((Ri))>data,(PC)+3+rel→PC,0→CY((Ri))<data,(PC)+3+rel→PC,1→CY比较立即数和间接RAM,不相等转移320000减1条件转移指令88DJNZ Rn,rel(Rn)-1→Rn若(Rn)≠0,则(PC)+2+rel→PC若(Rn)=0,则(PC)+2l→PC寄存器减1,不为0则转移220000 89DJNZ direct,rel(direct)-1→direct若(direct)≠0,则(PC)+2+rel→PC若(direct)=0,则(PC)+2→PC直接地址减1,不为0则转移320000绝对调用指令90ACALL addr11(PC)+2→PC(SP)+1→SP,(PC)7~0→(SP)(SP)+1→SP,(PC)15~8→(SP)addr11→PC10~0绝对调用子程序220000长调用指令91LCALL addr16(PC)+3→PC(SP)+1→SP,(PC)7~0→(SP)(SP)+1→SP,(PC)15~8→(SP)addr16→PC10~0长调用子程序320000返回指令92RET子程序返回((SP))→PC15~8,(SP)-1→SP((SP))→PC7~0,(SP)-1→SP从子程序返回120000 93RETI中断服务子程序返回((SP))→PC15~8,(SP)-1→SP((SP))→PC7~0,(SP)-1→SP从中断服务子程序返回120000空操作指令94NOP(PC)+1→PC空操作,用于短暂延时110000位传送指令组95MOV C,bit(bit)→CY直接寻址位传送到进位位210001 96MOV bit,C(CY)→(bit)进位位位传送到直接寻址220000位置1指令组97SETB C1→CY置位进位位110001 98SETB bit1→bit置位直接寻址位210000位清0指令组99CLR C0→CY清进位位110001 100CLR bit0→bit清直接寻址位210000位逻辑“与”运算101ANL C,bit(CY)^(bit)→CY直接寻址位“与”到进位位220001 102ANL C,/bit(CY)^(/bit)→CY直接寻址位的反码“与”到进位位220001位逻辑“或”运算103ORL C,bit(CY)U(bit)→CY直接寻址位“或”到进位位220001 104ORL C,/bit(CY)U(/bit)→CY直接寻址位的反码“或”到进位位220001位取反105CPL C(/CY)→CY取反进位位110001 106CPL bit(/bit)→(bit)取反直接寻址位210001以C状态为条件的转移指令107JC rel若(CY)=1,则(PC)+2+rel→PC若(CY)≠1,则(PC)+2→PC如果进位位为1则转移220000 108JNC rel若(CY)≠1,则(PC)+2+rel→PC若(CY)=1,则(PC)+2→PC如果进位位为0则转移220000以位状态为条件的转移指令109JB bit,rel若(bit)=1,则(PC)+3+rel→PC若(bit)≠1,则(PC)+3→PC如果直接寻址位为1则转移320000 110JNB bit,rel若(bit)=0,则(PC)+3+rel→PC若(bit)≠0,则(PC)+3→PC如果直接寻址位为0则转移320000 111JBC bit,rel若(bit)=1,则(PC)+3+rel→PC,0→bit若(bit)≠1,则(PC)+3→PC直接寻址位为1则转移并清除该位320000助记符指令说明字节数周期数(数据传递类指令)MOV A,Rn寄存器传送到累加器11 MOV A,direct直接地址传送到累加器21 MOV A,@Ri累加器传送到外部RAM(8地址)11 MOV A,#data立即数传送到累加器21 MOV Rn,A累加器传送到寄存器11 MOV Rn,direct直接地址传送到寄存器22 MOV Rn,#data累加器传送到直接地址21 MOV direct,Rn寄存器传送到直接地址21 MOV direct,direct直接地址传送到直接地址32 MOV direct,A累加器传送到直接地址21 MOV direct,@Ri间接RAM传送到直接地址22 MOV direct,#data立即数传送到直接地址32 MOV@Ri,A直接地址传送到直接地址12 MOV@Ri,direct直接地址传送到间接RAM21 MOV@Ri,#data立即数传送到间接RAM22 MOV DPTR,#data1616位常数加载到数据指针31 MOVC A,@A+DPTR代码字节传送到累加器12 MOVC A,@A+PC代码字节传送到累加器12 MOVX A,@Ri外部RAM(8地址)传送到累加器12 MOVX A,@DPTR外部RAM(16地址)传送到累加器12 MOVX@Ri,A累加器传送到外部RAM(8地址)12 MOVX@DPTR,A累加器传送到外部RAM(16地址)12 PUSH direct直接地址压入堆栈22POP direct直接地址弹出堆栈22 XCH A,Rn寄存器和累加器交换11 XCH A,direct直接地址和累加器交换21 XCH A,@Ri间接RAM和累加器交换11 XCHD A,@Ri间接RAM和累加器交换低4位字节11(算术运算类指令)INC A累加器加111 INC Rn寄存器加111 INC direct直接地址加121 INC@Ri间接RAM加111 INC DPTR数据指针加112 DEC A累加器减111 DEC Rn寄存器减111 DEC direct直接地址减122 DEC@Ri间接RAM减111 MUL AB累加器和B寄存器相乘14 DIV AB累加器除以B寄存器14 DA A累加器十进制调整11 ADD A,Rn寄存器与累加器求和11 ADD A,direct直接地址与累加器求和21 ADD A,@Ri间接RAM与累加器求和11 ADD A,#data立即数与累加器求和21 ADDC A,Rn寄存器与累加器求和(带进位)11 ADDC A,direct直接地址与累加器求和(带进位)21 ADDC A,@Ri间接RAM与累加器求和(带进位)11 ADDC A,#data立即数与累加器求和(带进位)21 SUBB A,Rn累加器减去寄存器(带借位)11SUBB A,direct累加器减去直接地址(带借位)21 SUBB A,@Ri累加器减去间接RAM(带借位)11 SUBB A,#data累加器减去立即数(带借位)21(逻辑运算类指令)ANL A,Rn寄存器“与”到累加器11 ANL A,direct直接地址“与”到累加器21 ANL A,@Ri间接RAM“与”到累加器11 ANL A,#data立即数“与”到累加器21 ANL direct,A累加器“与”到直接地址21 ANL direct,#data立即数“与”到直接地址32 ORL A,Rn寄存器“或”到累加器12 ORL A,direct直接地址“或”到累加器21 ORL A,@Ri间接RAM“或”到累加器11 ORL A,#data立即数“或”到累加器21 ORL direct,A累加器“或”到直接地址21 ORL direct,#data立即数“或”到直接地址31 XRL A,Rn寄存器“异或”到累加器12 XRL A,direct直接地址“异或”到累加器21 XRL A,@Ri间接RAM“异或”到累加器11 XRL A,#data立即数“异或”到累加器21 XRL direct,A累加器“异或”到直接地址21 XRL direct,#data立即数“异或”到直接地址31 CLR A累加器清零12 CPL A累加器求反11 RL A累加器循环左移11 RLC A带进位累加器循环左移11 RR A累加器循环右移11 RRC A带进位累加器循环右移11SWAP A累加器高、低4位交换11(控制转移类指令)JMP@A+DPTR相对DPTR的无条件间接转移12 JZ rel累加器为0则转移22 JNZ rel累加器为1则转移22 CJNE A,direct,rel比较直接地址和累加器,不相等转移32 CJNE A,#data,rel比较立即数和累加器,不相等转移32 CJNE Rn,#data,rel比较寄存器和立即数,不相等转移22 CJNE@Ri,#data,rel比较立即数和间接RAM,不相等转移32 DJNZ Rn,rel寄存器减1,不为0则转移32 DJNZ direct,rel直接地址减1,不为0则转移32 NOP空操作,用于短暂延时11 ACALL add11绝对调用子程序22 LCALL add16长调用子程序32 RET从子程序返回12 RETI从中断服务子程序返回12 AJMP add11无条件绝对转移22 LJMP add16无条件长转移32 SJMP rel无条件相对转移22(布尔指令)CLR C清进位位11 CLR bit清直接寻址位21 SETB C置位进位位11 SETB bit置位直接寻址位21 CPL C取反进位位11 CPL bit取反直接寻址位21 ANL C,bit直接寻址位“与”到进位位22 ANL C,/bit直接寻址位的反码“与”到进位位22ORL C,bit直接寻址位“或”到进位位22 ORL C,/bit直接寻址位的反码“或”到进位位22 MOV C,bit直接寻址位传送到进位位21 MOV bit,C进位位位传送到直接寻址22JC rel如果进位位为1则转移22 JNC rel如果进位位为0则转移22JB bit,rel如果直接寻址位为1则转移32 JNB bit,rel如果直接寻址位为0则转移32 JBC bit,rel直接寻址位为1则转移并清除该位22(伪指令)ORG指明程序的开始位置DB定义数据表DW定义16位的地址表EQU给一个表达式或一个字符串起名DATA给一个8位的内部RAM起名XDATA给一个8位的外部RAM起名BIT给一个可位寻址的位单元起名END指出源程序到此为止(指令中的符号标识)Rn工作寄存器R0-R7Ri工作寄存器R0和R1@Ri间接寻址的8位RAM单元地址(00H-FFH)#data88位常数#data1616位常数addr1616位目标地址,能转移或调用到64KROM的任何地方addr1111位目标地址,在下条指令的2K范围内转移或调用Rel 8位偏移量,用于SJMP和所有条件转移指令,范围-128~+127Bit片内RAM中的可寻址位和SFR的可寻址位Direct直接地址,范围片内RAM单元(00H-7FH)和80H-FFH $指本条指令的起始位置。