助记符
51单片机常用汇编语言助记符英文全称
JZ(JumpifZero)结果为0则转移;
JNZ(JumpifNotZero)结果不为0则转移;
JC(JumpiftheCarryflagisset)有进位则转移;
JNC(JumpifNotCarry)无进位则转移;
JB(JumpiftheBitisset)位为1则转移;
ANL(ANDLogic)逻辑与;
XRL(Exclusive-ORLogic)逻辑异或;
CLR(Clear)清零;CPL(Complement)取反;
RL(Rotateleft)循环左移;
RLC(RotateLeftthroughttheCarryflag)带进位循环左移;
RR(RotateRight)循环右移;
XCH(Exchange)字节交换;
XCHD(Exchangelow-orderDigit)低半字节交换;
PUSH(PushontoStack)入栈;
POP(PopfromStack)出栈;
(2)算术运算类指令(8种助记符)
ADD(Addition)加法;
ADDC(AddwithCarry)带进位加法;
RRC(RotateRightthroughttheCarryflag)带进位循环右移;
SWAP(Swap)低4位与高4位交换;
(4)控制转移类指令(17种助记符)
ACALL(AbsolutesubroutineCall)子程序绝对调用;
LCALL(LongsubroutineCall)子程序长调用;
PUSHF---->pushflagPOPF---->popflag
PUSHD---->pushdflagPOPD---->popdflag
03-MIPS指令助记符表
令集(共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赋值。
助记符
助记符号的记忆方法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。
单片机指令助记符
助记符代码说明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))寻址的程序存储器字节选A MOVC 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的低位SW AP 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(MOVe)传送指令PUSH 入栈指令POP 出栈指令XCHG(eXCHanG)交换指令XLAT(TRANSLATE)换码指令LEA (Load Effective Address)有效地址送寄存器指令LDS(Load DS with pointer)指针送寄存器和DS指令LES(Load ES with pointer)指针送寄存器和ES指令LAHF(Load AH with Flags)标志位送AH指令SAHF(Store AH into Flgs) AH送标志寄存器指令PUSHF(PUSH the Flags)标志进栈指令POPF(POP the Flags)标志出栈指令ADD 加法指令ADC 带进位加法指令INC 加1指令SUB(SUBtract)不带借位的减法指令SBB(SuVtrach with borrow)带借位的减法指令DEC(DECrement)减1指领NEG(NEGate)求补指令CMP(CoMPare)比较指令MUL(unsinged MULtiple)无符号数乘法指令IMUL(sIgned MUL tiple)有符号数乘法指令DIV(unsigned DIVide)无符号数除法指令IDIV(sIgned DIVide)有符号数除法指令CBW(Count Byte to Word)字节转换为字指令CWD(Count Word to Doble word)字转换为双字指令DAA 压缩的BCD码加法十进制调整指令DAS 压缩的BCD码减法十进制调整指令AAA 非压缩的BCD码加法十进制调整指令AAS 非压缩的BCD码加法十进制调整指令AND 逻辑与指令OR 逻辑或指令XOR 逻辑异或指令NOT 逻辑非指令TEST 测试指令SHL(SHift logical Letf)逻辑左移指令SHR(SHift logical Right)逻辑右移指令ROL(Rotate Left )循环左移指令P58ROR(Rotate Right)循环右移指令P58RCL(Rotate Left through Carry)带进位循环左移RCR(Rotate Right through Carry)带进位循环左移MOVS(MOVe String)串传送指令STOS(STOre into String)存入串指令LODS(LOad from string)从串取指令REP(REPeat)重复操作前CLD(CLear Direction flag)清除方向标志指令STD(SeT Direction flag)设置方向标志指令CMPS(CoMPare String)串比较指令SCAS(SCAn String)串扫描指令REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀答案补充REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀IN(INput)输入指令OUT(OUTput)输出指令JMP(JuMP)无条件转移指令JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令LOOP 循环指令P70LOOPZ/LOOPE 为零/相等时循环指令LOOPNZ/LOOPNE 不为零/不相等时循环指令CALL 子程序调用指令RET(RETun)子程序返回指令CLC(CLear Carry)进位位置0指令CMC(CoMplement Carry)进位位求反指令SRC(SeT Carry)进位位置1指令NOP(No OPeretion)无操作指令答案补充HLT(HaLT)停机指令OFFSET 返回偏移地址SEG 返回段地址EQU(=) 等值语句PURGE 解除语句DUP 操作数字段用复制操作符SEGMENT,ENDS 段定义指令ASSUME 段地址分配指令ORG 起始偏移地址设置指令$ 地址计数器的当前值PROC,ENDP 过程定义语句NAME,TITLE,END 程序开始结束语句MACRO,ENDM 宏定义指令JZ OPR //结果为零转移JNZ OPR //结果不为零转移JS OPR //结果为负转移JNS OPR //结果为正转移JO OPR //溢出转移JNO OPR //不溢出转移JP OPR //结果为偶转移JNP OPR //结果为奇转移JC OPR //有进位转移JNC OPR //无进位转移NV: 未溢出0 OV: 溢出1 ------------------------------OF UP: 方向为上0(di,si += 1) DN:方向为下1(di,si -= 1)---- DI: 关中断0 EI: 开中断1--------PL: 正0 NG: 负1-------------SFNZ: 非0 0 ZR: 0 1----------------ZFNA: 无辅助进位0 AC: 辅助进位1-------AFPO: 奇数0 PE: 偶数1 ------------PFNC: 无进位0 CY: 进位1 ----------Cf。
指令系统中各种助记符的英文全名
我现将指令系统中各种助记符的英文全名写出来,各种助记符的记忆就会变得很简单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 $指本条指令的起始位置。
指令助记符
汇编语言操作码助记符共44个,寻址方式七种:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。
可组合111条指令。
数据传送类助记符8个MOV : move 对内部RAM和SFR之间的数据传送MOVC: move code 读取ROM的数据传送MOVX: move external RAM 对外部RAM的传送XCH: exchange 字节交换XCHD: exchange low-order digit 低半字节交换SWAP: A中低4位与高4位互换PUSH: push into stack入栈POP: pop from stack 出栈算术运算操作码助记符(8个)ADD : addition 加法ADDC: add with carry 带进位加法SUBB: subtract with borrow 带借位减法DA: decimal adjust 十进制调整INC: increment 加1DEC: decrement 减1MUL: multiplication ,multiply 乘法DIV : division ,divide 除法逻辑运算和移位操作码助记符(10个)ANL : and logic 与逻辑ORL : or logic 或逻辑XRL : exclusive-or logic 异或逻辑CLR : clear 清0CPL : complement 取反RL: rotate left 左移RLC : rotate left throught the carry flag带进位左移RR: rotate right 右移RRC : rotate right throught the carry flag 带进位右移NOP: no operation 空操作控制转移类操作码助记符(12个)(一)无条件转移(4个)LJMP : LONG JUMP 长跳转AJMP : Absolute jump 绝对转移SJMP : short jump 短转移JMP :jump 转移(二)调用(2个)LCALL : long subroutine call 长调用SCALL : short subroutine call 短调用(三)返回(2个)RET : return from subroutine 子程序返回RETI : return from interruption 中断子程序返回(四)条件转移)(4个)(1)判零转移JZ: jump if zero 结果为0转移JNZ : jump if not zero 结果不为0转移(2 )比较转移CJNE: compare jump if not equal 比较不相等转移(3 )循环转移DJNZ: decrement jump if not zero 结果不为零转移位操作码助记符(11个实质为6 个)(一)数据传送MOV(二)位状态控制(1个)CLRSETB : SET BITCPL(三)位逻辑运算ANLORL(四)布尔条件转移(5个)JC : jump if the carry flag is set 有进位则转移JNC:jump if not carry 无进位则转移JB:jump if the bit is set 位为1则转移JNB:jump if the bit is not set 位为0则转移JBC:jump if the bit is set and clear the bit 位为1则转移,并清除该位。
助记符语言及环境语言设置
助记符语言及环境语言设置
•所谓“助记符”是指进行PLC程序设计时,各种指令元素的标识。
LQS40A48-5V0REJ这些标识一般用单词的缩写形式表示,以便于记忆。
如M( Memory)表示位存储器,T(Timer)表示定时器,C(Counter)(德语用Z)表示计数器,I(Input)(德语用E)表示输入元件,Q(德语用A)表示输出元件,用A( And)(德语用U)表示逻辑“与”运算,用O(Or)表示逻辑“或”运算等。
•STEP 7 V5.4在安装过程中提供了德语、英语、法语、西班牙语和意大利语5种可选择安装的环境语言和德语、英语两种助记符语言。
在图1- 28中单击Language标签,打开的Lan-guage选项卡如图1- 29所示。
图l-29助记符语言设置对话框
•对话框的左侧列出了已经安装的环境语言,选择一种语言,单击按钮,新的语言环境将在下次启动SIMATIC Manager后生效。
语言环境更改后,软件的窗口、菜单和帮助系统等都将随之改变。
•对话框的右侧为助记符语言列表,STEP 7支持德语和英语两种风格的助记符语言,切换助记符语言,单击匮至亟二]按钮,新的助记符语言风格将在下次启动SIMATIC Manager后生效。
这些语言主要影响各种元件的标识字符以及用于在梯形图(LAD)、语句表(STL)和功能块图(FBD)中编程的指令集。
汇编数据传送指令助记符
Rn 8个工作寄存器R0-R7Ri 4个工作寄存器区R0-R3 PSW.4 PSW.3 / RS1 RS0Dircet 8位内部RAM单元地址#data 8位常数#data16 16位常数addr16 16的目的地址;用LJMP\LCALL,指向64KB ROM空间地址addr11 11的目的地址;用AJMP\ACALL,指向2KB ROM空间地址Rel 8位带符号的偏移量;用SJMP和所有的条件转移指令指向-128到+127范围bit 位地址;内部RAM可直接寻址位DPTR 数据指针;16位地址寄存器rrr 3位二进制数:000-111A 累加器B 寄存器,可用于MUL/DIV指令中C 进位位或者进位标志@ 间接寄存器或者基址寄存器的前缀,@Ri,@DPTR/ 位操作的前缀,把该位取反(X) X中的内容((X)) 由X寻址的单元中的内容8位数据传送指令:MOV A,Rn/direct/@Ri/#data 将Rn/direct/@Ri/#data的数据放到A中MOV Rn,A/direct/#dataMOV direct1,A/Rn/direct2/@Ri/#dataMOV Ri,A/direct/#date16位数据传送指令:MOV DPTR,#date16 将16位立即数传送到16位的指令和数据外部数据传送指令:MOVX A,@Ri/@DPTR 将Ri、DPTR所指外部RAM单元的数据送与A MOVX @Ri,AMOVX @DPTR,A查表指令:MOVC A,@A+DPTRMOVC A,@A+PC数据交换指令:SWAP A A的低半字节与高半字节互换XCHD A,@Ri Ri的低四位与A的低四位互换XCH A,Rn/@Ri/direct Rn的内容与A的内容互换ADD A,Rn/direct/@Ri/#date 将A与Rn/direct/@Ri/#date的内容相加,结果放入A中ADDC A,Rn/direct/@Ri/#date 将A与Rn/direct/@Ri/#date的内容相加,再加上C,结果放入A中INC A/Rn/direct/@Ri/DPTR 将A/Rn/direct/@Ri/DPTR单元的内容自动加1DA A 将A中BCD码调整SUBB A,Rn/direct/@Ri/#date 将A的内容减去Rn/direct/@Ri/#date的内容,再减去C的内容,结果放入A中DEC A/Rn/direct/@Ri 将A/Rn/direct/@Ri单元的内容自动减1MUL AB 将A和B的内容相乘,结果中高8位放在B中,低8位放在A中DIV AB 将A和B的内容相除,结果余数放在B中,商放在A中逻辑运算类指令:CLR A 将ACC清零SETB A 将ACC置1CPL A 将ACC中的每一位进行取反ANL A,Rn/direct/@Ri/#data 将Rn/direct/@Ri/#data单元的值与A逻辑与运算,结果放入A 中ANL direct,A/#data 将A/#data与直接地址direct逻辑与运算,结果放在directORL A,Rn/direct/@Ri/#data 将Rn/direct/@Ri/#data单元的值与A逻辑或运算,结果放入A 中ORL direct,A/#data 将A/#data与直接地址direct逻辑或运算,结果放在directXRL A,Rn/direct/@Ri/#data 将Rn/direct/@Ri/#data单元的值与A逻辑异或运算,结果放入A 中XRL direct,A/#data 将A/#data与直接地址direct逻辑异或运算,结果放在direct循环/移位类指令:RL A 将A的内容左循环一位RLC A 将A的内容带进位左移一位RR A 将A的内容右移一位RRC A 将A的内容带进位右移一位调用/返回类指令:LCALL addr16 调用64KB范围内的子程序ACALL addr11 调用2KB范围内的子程序RET 子程序返回RETI 中断返回无条件转移类指令:LJMP addr16 程序无条件转移到16位目标地址,转移的范围为64KB地址空间AJMP addr11 程序无条件转移到11位目标地址,转移的范围为2KB地址空间SJMP rel 程序无条件转移到标号REL处,转移的范围为-128——+127地址空间JMP @A+DPTR 程序无条件转移到某个地址,该地址为@A+DPTR之和JZ rel 通过判定A的内容是否为0,再确定是否转移。
汇编助记符汇总
助记符指令说明字节数周期数(数据传递类指令)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 2MOVX 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 DEC @Ri 间接RAM 减1 1 1 MUL AB 累加器和B 寄存器相乘 1 4 DIV AB 累加器除以B 寄存器 1 4DA 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 2ORL 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 2JNZ 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清进位位11 CLR bit清直接寻址位21 SETB C置位进位位11 SETB bit置位直接寻址位21 CPL C取反进位位11CPL bit取反直接寻址位21 ANL C,bit直接寻址位“与”到进位位22 ANL C,/bit直接寻址位的反码“与”到进位位22 ORL C,bit直接寻址位“或”到进位位22 ORL C,/bit直接寻址位的反码“或”到进位位22 MOV C,bit直接寻址位传送到进位位21 MOV bit, C进位位位传送到直接寻址22 JC rel如果进位位为1 则转移22 JNC rel如果进位位为0 则转移22 JB 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)#data8 8 位常数#data16 16 位常数addr16 16 位目标地址,能转移或调用到64KROM 的任何地方addr11 11 位目标地址,在下条指令的2K 范围内转移或调用Rel 8 位偏移量,用于SJMP 和所有条件转移指令,范围-128~+127 Bit 片内RAM 中的可寻址位和SFR 的可寻址位Direct 直接地址,范围片内RAM 单元(00H-7FH)和80H-FFH$ 指本条指令的起始位置。
助记符说明表
助记符
指令说明
字节数
周期数
(数据传递类指令)
MOV
A,Rn
寄存器传送到irect
直接地址传送到累加器
2
1
MOV
A,@Ri
累加器传送到外部RAM(8地址)
1
1
MOV
A,#data
立即数传送到累加器
2
1
MOV
Rn,A
累加器传送到寄存器
1
1
MOV
Rn,direct
直接地址传送到寄存器
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
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表格列举法把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。
汇编语言_助记符翻译
CJNE (Compare Jump if Not Equal)比较不相等则转移;
DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;
JZ (Jump if Zero)结果为0则转移;
JNZ (Jump if Not Zero) 结果不为0则转移;
RR(Rotate Right) 循环右移;
RRC (Rotate Right throught the Carry flag) 带进位循环右移;
SWAP (Swap) 低4位与高4位交换;
(4)控制转移类指令(17种助记符)
ACALL(Absolute subroutine Call)子程序绝对调用;
LODS---->load string
STOS---->store string
REP---->repeat
REPE---->repeat when equal
REPZ---->repeat when zero flag
REPNE---->repeat when not equal
SHL---->shift left
SAL---->arithmatic shift left
SHR---->shift right
SAR---->arithmatic shift right
ROL---->rotate left
ROR---->rotate right
RCL---->rotate left with carry
LCALL(Long subroutine Call)子程序长调用;
汇编语言助记符
汇编语言助记符汇编语言是一种低级语言,是计算机硬件能够直接执行的语言。
在编写汇编代码时,为了方便记忆和使用,人们使用了一些助记符(mnemonic)来代表机器指令和操作数的操作符。
本文将介绍一些常见的汇编语言助记符以及它们的用法和含义。
1. MOV(Move)MOV是汇编语言中最常见的助记符之一,用于将数据从一个位置移动到另一个位置。
例如,MOV AX, 42表示将值42移动到寄存器AX中。
MOV指令通常用于数据传输和寄存器之间的操作。
2. ADD(Addition)ADD助记符用于执行加法操作。
例如,ADD AX, BX表示将寄存器BX的值加到寄存器AX中。
ADD指令还可以用于将常数加到寄存器中或将内存中的值与寄存器中的值相加。
3. SUB(Subtraction)SUB助记符用于执行减法操作。
例如,SUB AX, BX表示将寄存器BX的值从寄存器AX中减去。
与ADD指令类似,SUB指令也可以用于将常数从寄存器中减去或从内存中的值中减去寄存器中的值。
4. JMP(Jump)JMP助记符用于实现无条件跳转,即程序将跳转到指定地址处继续执行。
例如,JMP Label表示跳转到标签(Label)所指示的位置。
使用JMP指令可以实现程序的循环、条件分支等控制结构。
5. CMP(Compare)CMP助记符用于进行比较操作,通常与条件跳转指令(如JMP、JZ、JG等)配合使用。
例如,CMP AX, BX表示比较寄存器AX和BX 中的值。
通过CMP指令可以判断两个值的大小关系,并根据比较结果执行不同的操作。
6. NOP(No Operation)NOP助记符表示空操作,即不进行任何实际操作。
在编写汇编代码时,可以使用NOP来占据一段空白的指令空间或进行调试时的代码标记。
7. INC(Increment)INC助记符用于将寄存器或内存中的值加1。
例如,INC AX表示将寄存器AX中的值加1,INC [BX]表示将寄存器BX所指向的内存单元中的值加1。
汇编语言助记符
汇编语言助记符一、MOV指令MOV指令是汇编语言中最基本的指令之一,用于将数据从一个位置复制到另一个位置。
它有多种格式,可以用来复制寄存器、内存和立即数。
1. MOV AX, BX这条指令将BX寄存器中的数据复制到AX寄存器中。
MOV指令可以用于寄存器之间的数据传输。
2. MOV [SI], AL这条指令将AL寄存器中的数据复制到SI寄存器指向的内存单元中。
MOV指令还可以用于将数据从寄存器传输到内存。
二、ADD指令ADD指令用于将两个数相加,并将结果存储在目标操作数中。
1. ADD AX, BX这条指令将AX寄存器和BX寄存器中的数据相加,并将结果存储在AX寄存器中。
ADD指令可以用于寄存器之间的相加运算。
2. ADD [SI], AL这条指令将AL寄存器中的数据与SI寄存器指向的内存单元中的数据相加,并将结果存储在该内存单元中。
ADD指令还可以用于将数据与内存中的数据相加。
三、SUB指令SUB指令用于将一个数减去另一个数,并将结果存储在目标操作数中。
1. SUB AX, BX这条指令将BX寄存器中的数据从AX寄存器中的数据中减去,并将结果存储在AX寄存器中。
SUB指令可以用于寄存器之间的相减运算。
2. SUB [SI], AL这条指令将SI寄存器指向的内存单元中的数据从AL寄存器中的数据中减去,并将结果存储在该内存单元中。
SUB指令还可以用于将内存中的数据从寄存器中的数据中相减。
四、INC指令INC指令用于将一个操作数加1。
1. INC AX这条指令将AX寄存器中的数据加1,并将结果存储在AX寄存器中。
INC指令可以用于寄存器的自增操作。
2. INC [SI]这条指令将SI寄存器指向的内存单元中的数据加1,并将结果存储在该内存单元中。
INC指令还可以用于内存中数据的自增操作。
五、DEC指令DEC指令用于将一个操作数减1。
1. DEC AX这条指令将AX寄存器中的数据减1,并将结果存储在AX寄存器中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
空操作,用于短暂延时
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
间接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
累加器循环右移
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
助记符
指令说明
字节数
周期数
(数据传递类指令)
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
直接地址传送到寄存器
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
直接寻址位传送到进位位
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
(伪指令)
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
立即数传送到直接地址
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
Bit
片内RAM 中的可寻址位和SFR 的可寻址位
Direct
直接地址,范围片内RAM 单元(00H-7FH)和80H-FFH
$
指本条指令的起始位置
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
立即数与累加器求和(带进位)
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
寄存器“与”CALL
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
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
直接地址弹出堆栈
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
代码字节传送到累加器
@Ri
间接寻址的8 位RAM 单元地址(00H-FFH)
#data8
8 位常数
#data16
16 位常数
addr16
16位目标地址,能转移或调用到64KROM 的任何地方
addr11
11位目标地址,在下条指令的2K 范围内转移或调用
Rel
8 位偏移量,用于SJMP 和所有条件转移指令,范围-128~+127
A,direct
直接地址“与”到累加器
2