您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 51单片机汇编指令集(附记忆方法)
-1-51单片机汇编指令集一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(MoveCode)读取程序存储器数据表格的数据传送;MOVX(MoveExternalRAM)对外部RAM的数据传送;XCH(Exchange)字节交换;XCHD(Exchangelow-orderDigit)低半字节交换;PUSH(PushontoStack)入栈;POP(PopfromStack)出栈;二、算术运算类指令(8种助记符)ADD(Addition)加法;ADDC(AddwithCarry)带进位加法;SUBB(SubtractwithBorrow)带借位减法;DA(DecimalAdjust)十进制调整;INC(Increment)加1;DEC(Decrement)减1;MUL(Multiplication、Multiply)乘法;DIV(Division、Divide)除法;三、逻辑运算类指令(10种助记符)ANL(ANDLogic)逻辑与;ORL(ORLogic)逻辑或;XRL(Exclusive-ORLogic)逻辑异或;CLR(Clear)清零;CPL(Complement)取反;RL(Rotateleft)循环左移;RLC(RotateLeftthroughttheCarryflag)带进位循环左移;RR(RotateRight)循环右移;RRC(RotateRightthroughttheCarryflag)带进位循环右移;SWAP(Swap)低4位与高4位交换;四、控制转移类指令(17种助记符)ACALL(AbsolutesubroutineCall)子程序绝对调用;LCALL(LongsubroutineCall)子程序长调用;RET(Returnfromsubroutine)子程序返回;RETI(ReturnfromInterruption)中断返回;SJMP(ShortJump)短转移;AJMP(AbsoluteJump)绝对转移;LJMP(LongJump)长转移;CJNE(CompareJumpifNotEqual)比较不相等则转移;-2-DJNZ(DecrementJumpifNotZero)减1后不为0则转移;JZ(JumpifZero)结果为0则转移;JNZ(JumpifNotZero)结果不为0则转移;JC(JumpiftheCarryflagisset)有进位则转移;JNC(JumpifNotCarry)无进位则转移;JB(JumpiftheBitisset)位为1则转移;JNB(JumpiftheBitisNotset)位为0则转移;JBC(JumpiftheBitissetandClearthebit)位为1则转移,并清除该位;NOP(NoOperation)空操作;五、位操作指令(1种助记符)CLR位清零;SETB(SetBit)位置1。8种常用伪指令1.ORG16位地址;此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。2.[标号:]DB字节数据项表;将项表中的字节数据存放到从标号开始的连续字节单元中。例如:SEG:DB88H,100,“7”,“C”3.[标号:]DW双字节数据项表;定义16位地址表,16地址按低位地址存低位字节,高位地址存高位字节。例如:TAB:DW1234H,7BH4.名字EQU表达式或名字=表达式;用与给一个表达式赋值或给字符串起名字。之后名字可用做程序地址,数据地址或立即数地址使用。名字必须是一字母开头的字母数字串。例如:COUNT=10或SPACEEQU10H5.名字DATA直接字节地址;给8位内部RAM单元起个名字,名字必须是一字母开头的字母数字串。同一单元可起多个名字。例如:ERRORDATA80H6.名字XDATA直接字节地址;给8位外部RAM起个名字,名字规定同DATA伪指令。例如:IO_PORTXDATA0CF04H7.名字BIT位指令;给一可位寻址的位单元起个名字,规定同DATA伪指令。例如:SWTBIT30H8.[标号:]END;指出源程序到此结束,汇编对其后的程序语句不予理睬。源程序只在主程序最后使用一个END。-3-指令集(111条)助记符说明字节周期代码1.数据传送指令(30条)MOVA,Rn寄存器送A11E8--EFMOVA,data直接字节送A21E5MOVA,@Ri间接RAM送A11E6--E7MOVA,#data立接数送A2174MOVRn,AA送寄存器11F8--FFMOVRn,data直接数送寄存器22A8--AFMOVRn,#data立即数送寄存器2178--7FMOVdata,AA送直接字节21F5MOVdata,Rn寄存器送直接字节2188—8FMOVdata,data直接字节送直接字节3285MOVdata,@Ri间接Rn送直接字节2286;87MOVdata,#data立即数送直接字节3275MOV@Ri,AA送间接Rn12F6;F7MOV@Ri,data直接字节送间接Rn11A6;A7MOV@Ri,#data立即数送间接Rn2276;77MOVDPTR,#data1616位常数送数据指针3190MOVC,bit直接位送进位位21A2MOVbit,C进位位送直接位2292MOVCA,@A+DPTRA+DPTR寻址程序存贮字节送A3293MOVCA,@A+PCA+PC寻址程序存贮字节送A1283MOVXA,@Ri外部数据送A(8位地址)12E2;E3MOVXA,@DPTR外部数据送A(16位地址)12E0MOVX@Ri,AA送外部数据(8位地址)12F2;F3MOVX@DPTR,AA送外部数据(16位地址)12F0PUSHdata直接字节进栈道,SP加122C0POPdata直接字节出栈,SP减122D0XCHA,Rn寄存器与A交换11C8—CFXCHA,data直接字节与A交换21C5XCHA,@Ri间接Rn与A交换11C6;C7XCHDA,@Ri间接Rn与A低半字节交换11D6;D72.逻辑运算指令(35条)ANLA,Rn寄存器与到A1158—5FANLA,data直接字节与到A2155ANLA,@Ri间接RAM与到A1156;57ANLA,#data立即数与到A2154ANLdata,AA与到直接字节2152ANLdata,#data立即数与到直接字节3253ANLC,bit直接位与到进位位2282ANLC,/bit直接位的反码与到进位位22B0-4-ORLA,Rn寄存器或到A1148—4FORLA,data直接字节或到A2145ORLA,@Ri间接RAM或到A1146;47ORLA,#data立即数或到A2144ORLdata,AA或到直接字节2142ORLdata,#data立即数或到直接字节3243ORLC,bit直接位或到进位位2272ORLC,/bit直接位的反码或到进位位22A0XRLA,Rn寄存器异或到A1168—6FXRLA,data直接字节异或到A2165XRLA,@Ri间接RAM异或到A1166;67XRLA,#data立即数异或到A2164XRLdata,AA异或到直接字节2162XRLdata,#data立即数异或到直接字节3263SETBC进位位置111D3SETBbit直接位置121D2CLRAA清011E4CLRC进位位清011C3CLRbit直接位清021C2CPLAA求反码11F4CPLC进位位取反11B3CPLbit直接位取反21B2RLAA循环左移一位1123RLCAA带进位左移一位1133RRAA右移一位1103RRCAA带进位右移一位1113SWAPAA半字节交换11C43.算术运算指令(24条)ADDA,Rn寄存器加到A1128—2FADDA,data直接字节加到A2125ADDA,@Ri间接RAM加到A1126;27ADDA,#data立即数加到A2124ADDCA,Rn寄存器带进位加到A1138—3FADDCA,data直接字节带进位加到A2135ADDCA,@Ri间接RAM带进位加到A1136;37ADDCA,#data立即数带进位加到A2134SUBBA,Rn从A中减去寄存器和进位1198—9FSUBBA,data从A中减去直接字节和进位2195SUBBA,@Ri从A中减去间接RAM和进位1196;97SUBBA,#data从A中减去立即数和进位2194INCAA加11104INCRn寄存器加11108—0FINCdata直接字节加12105-5-INC@Ri间接RAM加11106;07INCDPTR数据指针加112A3DECAA减11114DECRn寄存器减11118—1FDECdata直接字节减12115DEC@Ri间接RAM减11116;17MULABA乘B14A4DIVABA被B除1484DAAA十进制调整11D44.转移指令(22条)AJMPaddr11绝对转移22*1LJMPaddr16长转移3202SJMPrel短转移2280JMP@A+DPTR相对于DPTR间接转移1273JZrel若A=0则转移2260JNZrel若A≠0则转移2270JCrel若C=1则转移2240JNCrel若C≠1则转移2250JBbit,rel若直接位=1则转移3220JNBbit,rel若直接位=0则转移3230JBCbit,rel若直接位=1则转移且清除3210CJNEA,data,rel直接数与A比较,不等转移32B5CJNEA,#data,rel立即数与A比较,不等转移32B4CJNE@Ri,#data,rel立即数与间接RAM比较,不等转移32B6;B7CJNERn,#data,rel立即数与寄存器比较不等转移32B8—BFDJNZRn,rel寄存器减1不为0转移22D8—DFDJNZdata,rel直接字节减1不为0转移32D5ACALLaddr11绝对子程序调用22*1LCALLaddr16子程序调用3212RET子程序调用返回1222RETI中断程序调用返回1232NOP空操作1100六.记忆方法MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能,其操作数有#data、direct、Rn、@Ri等。这里先介绍指令助记符及其相关符号的记忆方法。一、助记符号的记忆方法表格列举法把44个指令助记符按功能分为五类,每类列表记忆。此处从略,请读者自己总结。英文还原法单片机的操作码助记符是该指令功能的英文缩写,将缩写还原成英语原文,再对照汉语有助于理解其助记符含义,从而加强记忆。例如:-6-增量INC-Incremect减量DNC-Decrement短转移SJMP-Shortjump长转移LJMP-Longjump比较转移CJNE-Comparejumpnotequality绝对转移AJMP-Absolutejump空操作NOP-Nooperation交换XCH-Exchange加法ADD-Addition乘法MUL-Multiplication除法DIV-Division左环移RL-Rotateleft进位左环移RLC-Rotateleftcarry右环移RR-Rotateright进位右环移RRC-Rotaterightcarry功能模块记忆法单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。这样,化整为零,各个击破,实现快速记忆。1)数据传送组。2)加减运算组MOV内部数据传送ADD加法MOVC程序存储器传送ADDC带进位加法MOVX外部数据传送SUBB带进位减法3)逻辑运算组。4)子程序调用组。ANL逻辑与LCALL长调用ORL逻辑或ALALL绝对调用XRL逻辑异或RET子程序返回二、指令的记忆方法指令操作数的有关符号MCS-51的寻址方式共有六种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变址寻址、相对寻址。我们必须掌握其表示的方法。1)立即数与直接地址。ata表示八位立即数,#data
本文标题:51单片机汇编指令集(附记忆方法)
链接地址:https://www.777doc.com/doc-7336706 .html