51单片机指令集汇总

来源:本站
导读:目前正在解读《51单片机指令集汇总》的相关信息,《51单片机指令集汇总》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《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)比较不相等则转移;

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,7BH

4.名字EQU表达式或名字=表达式;

用与给一个表达式赋值或给字符串起名字。之后名字可用做程序地址,数据地址或立即数地址使用。名字必须是一字母开头的字母数字串。

例如:COUNT=10或SPACEEQU10H

5.名字DATA直接字节地址;

给8位内部RAM单元起个名字,名字必须是一字母开头的字母数字串。同一单元可起多个名字。

例如:ERRORDATA80H

6.名字XDATA直接字节地址;

给8位外部RAM起个名字,名字规定同DATA伪指令。

例如:IO_PORTXDATA0CF04H

7.名字BIT位指令;

给一可位寻址的位单元起个名字,规定同DATA伪指令。

例如:SWTBIT30H

8.[标号:]END;

指出源程序到此结束,汇编对其后的程序语句不予理睬。源程序只在主程序最后使用一个END。

1.数据传送指令(30条)

MOVA,Rn寄存器送A11E8--EF

MOVA,data直接字节送A21E5

MOVA,@Ri间接RAM送A11E6--E7

MOVA,#data立接数送A2174

MOVRn,AA送寄存器11F8--FF

MOVRn,data直接数送寄存器22A8--AF

MOVRn,#data立即数送寄存器2178--7F

MOVdata,AA送直接字节21F5

MOVdata,Rn寄存器送直接字节2188—8F

MOVdata,data直接字节送直接字节3285

MOVdata,@Ri间接Rn送直接字节2286;87

MOVdata,#data立即数送直接字节3275

MOV@Ri,AA送间接Rn12F6;F7

MOV@Ri,data直接字节送间接Rn11A6;A7

MOV@Ri,#data立即数送间接Rn2276;77

MOVDPTR,#data1616位常数送数据指针3190

MOVC,bit直接位送进位位21A2

MOVbit,C进位位送直接位2292

MOVCA,@A+DPTRA+DPTR寻址程序存贮字节送A3293

MOVCA,@A+PCA+PC寻址程序存贮字节送A1283

MOVXA,@Ri外部数据送A(8位地址)12E2;E3

MOVXA,@DPTR外部数据送A(16位地址)12E0

MOVX@Ri,AA送外部数据(8位地址)12F2;F3

MOVX@DPTR,AA送外部数据(16位地址)12F0

PUSHdata直接字节进栈道,SP加122C0

POPdata直接字节出栈,SP减122D0

XCHA,Rn寄存器与A交换11C8—CF

XCHA,data直接字节与A交换21C5

XCHA,@Ri间接Rn与A交换11C6;C7

XCHDA,@Ri间接Rn与A低半字节交换11D6;D7

2.逻辑运算指令(35条)

ANLA,Rn寄存器与到A1158—5F

ANLA,data直接字节与到A2155

ANLA,@Ri间接RAM与到A1156;57

ANLA,#data立即数与到A2154

ANLdata,AA与到直接字节2152

ANLdata,#data立即数与到直接字节3253

ANLC,bit直接位与到进位位2282

ANLC,/bit直接位的反码与到进位位22B0

ORLA,Rn寄存器或到A1148—4F

ORLA,data直接字节或到A2145

ORLA,@Ri间接RAM或到A1146;47

ORLA,#data立即数或到A2144

ORLdata,AA或到直接字节2142

ORLdata,#data立即数或到直接字节3243

ORLC,bit直接位或到进位位2272

ORLC,/bit直接位的反码或到进位位22A0

XRLA,Rn寄存器异或到A1168—6F

XRLA,data直接字节异或到A2165

XRLA,@Ri间接RAM异或到A1166;67

XRLA,#data立即数异或到A2164

XRLdata,AA异或到直接字节2162

XRLdata,#data立即数异或到直接字节3263

SETBC进位位置111D3

SETBbit直接位置121D2

CLRAA清011E4

CLRC进位位清011C3

CLRbit直接位清021C2

CPLAA求反码11F4

CPLC进位位取反11B3

CPLbit直接位取反21B2

RLAA循环左移一位1123

RLCAA带进位左移一位1133

RRAA右移一位1103

RRCAA带进位右移一位1113

SWAPAA半字节交换11C4

3.算术运算指令(24条)

ADDA,Rn寄存器加到A1128—2F

ADDA,data直接字节加到A2125

ADDA,@Ri间接RAM加到A1126;27

ADDA,#data立即数加到A2124

ADDCA,Rn寄存器带进位加到A1138—3F

ADDCA,data直接字节带进位加到A2135

ADDCA,@Ri间接RAM带进位加到A1136;37

ADDCA,#data立即数带进位加到A2134

SUBBA,Rn从A中减去寄存器和进位1198—9F

SUBBA,data从A中减去直接字节和进位2195

SUBBA,@Ri从A中减去间接RAM和进位1196;97

SUBBA,#data从A中减去立即数和进位2194

INCAA加11104

INCRn寄存器加11108—0F

INCdata直接字节加12105

INC@Ri间接RAM加11106;07

INCDPTR数据指针加112A3

DECAA减11114

DECRn寄存器减11118—1F

DECdata直接字节减12115

DEC@Ri间接RAM减11116;17

MULABA乘B14A4

DIVABA被B除1484

DAAA十进制调整11D4

4.转移指令(22条)

AJMPaddr11绝对转移22*1

LJMPaddr16长转移3202

SJMPrel短转移2280

JMP@A+DPTR相对于DPTR间接转移1273

JZrel若A=0则转移2260

JNZrel若A≠0则转移2270

JCrel若C=1则转移2240

JNCrel若C≠1则转移2250

JBbit,rel若直接位=1则转移3220

JNBbit,rel若直接位=0则转移3230

JBCbit,rel若直接位=1则转移且清除3210

CJNEA,data,rel直接数与A比较,不等转移32B5

CJNEA,#data,rel立即数与A比较,不等转移32B4

CJNE@Ri,#data,rel立即数与间接RAM比较,不等转移32B6;B7

CJNERn,#data,rel立即数与寄存器比较不等转移32B8—BF

DJNZRn,rel寄存器减1不为0转移22D8—DF

DJNZdata,rel直接字节减1不为0转移32D5

ACALLaddr11绝对子程序调用22*1

LCALLaddr16子程序调用3212

RET子程序调用返回1222

RETI中断程序调用返回1232

NOP空操作1100

提醒:《51单片机指令集汇总》最后刷新时间 2024-03-14 01:09:39,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《51单片机指令集汇总》该内容的真实性请自行鉴别。