最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

51单片机汇编指令集(附记忆方法)

来源:动视网 责编:小OO 时间:2025-10-02 10:52:25
文档

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(MoveCode)读取程序存储器数据表格的数据传送;MOVX(MoveExternalRAM)对外部RAM的数据传送;XCH(Exchange)字节交换;XCHD(Exchangelow-orderDigit)低半字节交换;PUSH(PushontoStack)入栈;POP(PopfromStack)出栈;二、算术运算类指令(8种助记符)ADD(A
推荐度:
导读51单片机汇编指令集一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(MoveCode)读取程序存储器数据表格的数据传送;MOVX(MoveExternalRAM)对外部RAM的数据传送;XCH(Exchange)字节交换;XCHD(Exchangelow-orderDigit)低半字节交换;PUSH(PushontoStack)入栈;POP(PopfromStack)出栈;二、算术运算类指令(8种助记符)ADD(A
51单片机汇编指令集

一、数据传送类指令(7种助记符)

MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;

MOVC(Move Code)读取程序存储器数据表格的数据传送;

MOVX (Move External RAM) 对外部RAM的数据传送;

XCH (Exchange) 字节交换;

XCHD (Exchange low-order Digit) 低半字节交换;

PUSH (Push onto Stack) 入栈;

POP  (Pop from Stack) 出栈;

二、算术运算类指令(8种助记符)

ADD(Addition) 加法;

ADDC(Add with Carry) 带进位加法;

SUBB(Subtract with Borrow) 带借位减法;

DA(Decimal Adjust) 十进制调整;

INC(Increment) 加1;

DEC(Decrement) 减1;

MUL(Multiplication、Multiply) 乘法;

DIV(Division、Divide) 除法;

三、逻辑运算类指令(10种助记符)

ANL(AND Logic) 逻辑与;

ORL(OR Logic) 逻辑或;

XRL(Exclusive-OR Logic) 逻辑异或;

CLR(Clear) 清零;

CPL(Complement) 取反;

RL(Rotate left) 循环左移;

RLC(Rotate Left throught the Carry flag) 带进位循环左移;

RR(Rotate Right) 循环右移;

RRC (Rotate Right throught the Carry flag) 带进位循环右移;

SWAP (Swap) 低4位与高4位交换;

四、控制转移类指令(17种助记符)

ACALL(Absolute subroutine Call)子程序绝对调用;

LCALL(Long subroutine Call)子程序长调用;

RET(Return from subroutine)子程序返回;

RETI(Return from Interruption)中断返回;

SJMP(Short Jump)短转移;

AJMP(Absolute Jump)绝对转移;

LJMP(Long Jump)长转移;

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则转移;

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则转移,并清除该位;

NOP (No Operation) 空操作;

五、位操作指令(1种助记符)

CLR  位清零;

SETB(Set Bit) 位 置1 。

8种常用伪指令

1.ORG   16位地址 ;

此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。

2.[标号:] DB 字节数据项表;

将项表中的字节数据存放到从标号开始的连续字节单元中。例如:SEG: DB 88H,100,“7”,“C”

3.[标号:]DW   双字节数据项表;

定义16位地址表,16地址按低位地址存低位字节,高位地址存高位字节。

例如:TAB: DW  1234H,7BH

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

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

例如:COUNT=10 或 SPACE  EQU  10H

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

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

例如:ERROR  DATA  80H

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

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

例如:IO_PORT  XDATA  0CF04H

7.名字 BIT 位指令;

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

例如:SWT BIT 30H

8.[标号:] END;

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

指 令 集(111条)

助 记 符说明字节周期代 码
1.数据传送指令(30条)

MOV A,Rn寄存器送 A 11E8--EF
MOV A,data直接字节送A 21E5
MOV A,@Ri间接RAM 送A 11E6--E7
MOV A,#data立接数送 A 2174
MOV Rn,AA 送寄存器11F8--FF
MOV Rn,data直接数送寄存器22A8--AF
MOV Rn,#data立即数送寄存器2178--7F
MOV data,AA 送直接字节21F5
MOV data,Rn寄存器送直接字节2188—8F
MOV data,data直接字节送直接字节3285
MOV data,@Ri间接 Rn 送直接字节2286;87
MOV data,#data立即数送直接字节3275
MOV @Ri,AA 送间接 Rn12F6;F7
MOV @Ri,data直接字节送间接Rn11A6;A7
MOV @Ri,#data立即数送间接 Rn2276;77
MOV DPTR,#data1616 位常数送数据指针3190
MOV C,bit直接位送进位位21A2
MOV bit,C进位位送直接位2292
MOVC A,@A+DPTRA+DPTR 寻址程序存贮字节送 A3293
MOVC A,@A+PCA+PC 寻址程序存贮字节送A1283
MOVX A,@Ri外部数据送A(8 位地址)12E2;E3
MOVX A,@DPTR外部数据送A(16 位地址)12E0
MOVX @Ri,AA 送外部数据(8 位地址)12F2;F3
MOVX @DPTR,A A 送外部数据(16 位地址)12F0
PUSH data直接字节进栈道,SP 加122C0
POP data直接字节出栈,SP 减122D0
XCH A,Rn寄存器与 A 交换11C8—CF
XCH A,data直接字节与A 交换21C5
XCH A,@Ri间接Rn 与A 交换11C6;C7
XCHD A,@Ri间接Rn 与A 低半字节交换11D6;D7
2.逻辑运算指令(35条)

ANL A,Rn寄存器与到A1158—5F
ANL A,data直接字节与到A2155
ANL A,@Ri间接RAM与到A1156;57
ANL A,#data立即数与到A2154
ANL data,AA与到直接字节2152
ANL data,#data立即数与到直接字节3253
ANL C,bit直接位与到进位位2282
ANL C,/bit直接位的反码与到进位位22B0
ORL A,Rn寄存器或到A1148—4F
ORL A,data直接字节或到A2145
ORL A,@Ri间接RAM或到A1146;47
ORL A,#data立即数或到A2144
ORL data,AA或到直接字节2142
ORL data,#data立即数或到直接字节3243
ORL C,bit直接位或到进位位2272
ORL C,/bit直接位的反码或到进位位22A0
XRL A,Rn寄存器异或到A1168—6F
XRL A,data直接字节异或到A2165
XRL A,@Ri间接RAM异或到A1166;67
XRL A,#data立即数异或到A21
XRL data,AA异或到直接字节2162
XRL data,#data立即数异或到直接字节3263
SETB C进位位置 111D3
SETB bit直接位置 121D2
CLR AA清011E4
CLR C进位位清 011C3
CLR bit直接位清 021C2
CPL AA求反码11F4
CPL C进位位取反 11B3
CPL bit直接位取反21B2
RL AA循环左移一位 1123
RLC AA 带进位左移一位1133
RR AA右移一位1103
RRC AA 带进位右移一位1113
SWAP AA 半字节交换11C4
3.算术运算指令(24条)

ADD A,Rn寄存器加到A 1128—2F
ADD A,data直接字节加到A2125
ADD A,@Ri间接RAM 加到A1126;27
ADD A,#data立即数加到A2124
ADDC A,Rn寄存器带进位加到 A1138—3F
ADDC A,data直接字节带进位加到A2135
ADDC A,@Ri间接RAM 带进位加到A1136;37
ADDC A,#data立即数带进位加到 A2134
SUBB A,Rn从A 中减去寄存器和进位1198—9F
SUBB A,data从A 中减去直接字节和进位2195
SUBB A,@Ri 从A 中减去间接RAM 和进位1196;97
SUBB A,#data从A 中减去立即数和进位2194
INC AA加11104
INC Rn寄存器加 11108—0F
INC data直接字节加12105
INC @Ri间接RAM 加11106;07
INC DPTR数据指针加112A3
DEC AA减11114
DEC Rn寄存器减 11118—1F
DEC data直接字节减12115
DEC @Ri间接RAM 减11116;17
MUL ABA乘B14A4
DIV ABA被B除1484
DA AA十进制调整11D4
4.转移指令(22条)

AJMP addr 11绝对转移22*1
LJMP addr 16长转移3202
SJMP rel短转移2280
JMP @A+DPTR相对于DPTR 间接转移1273
JZ rel若A=0 则转移2260
JNZ rel若A≠0 则转移2270
JC rel若C=1 则转移2240
JNC rel若C≠1 则转移2250
JB bit,rel若直接位=1 则转移3220
JNB bit,rel若直接位=0 则转移3230
JBC bit,rel若直接位=1 则转移且清除3210
CJNE A,data,rel直接数与 A 比较,不等转移32B5
CJNE A,#data,rel立即数与 A 比较,不等转移32B4
CJNE @Ri,#data,rel立即数与间接RAM比较,不等转移

32B6;B7
CJNE Rn,#data,rel立即数与寄存器比较不等转移32B8—BF
DJNZ Rn,rel 寄存器减 1 不为0 转移22D8—DF
DJNZ data,rel直接字节减1 不为 0 转移32D5
ACALL addr 11绝对子程序调用22*1
LCALL addr 16子程序调用3212
RET子程序调用返回1222
RETI中断程序调用返回1232
NOP空操作1100
六.记忆方法

MCS-51使用汇编语言指令,它共有44个操作码助记符,33种功能, 

其操作数有#data、direct、Rn、@Ri等。这里先介绍指令助记符及其相关符号的记忆方法。 

一、助记符号的记忆方法 

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 carry 

3 功能模块记忆法 

单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原 

则为2~3组。这样,化整为零,各个击破,实现快速记忆。 

1)数据传送组。 2)加减运算组 

MOV 内部数据传送 ADD 加法 

MOVC 程序存储器传送 ADDC 带进位加法 

MOVX 外部数据传送 SUBB 带进位减法 

3)逻辑运算组。 4)子程序调用组。 

ANL 逻辑与 LCALL 长调用 

ORL 逻辑或 ALALL 绝对调用 

XRL 逻辑异或 RET 子程序返回 

二、指令的记忆方法 

1 指令操作数的有关符号 

MCS-51的寻址方式共有六种:立即数寻址、直接寻址、寄存器寻址、寄存器间址、变 

址寻址、相对寻址。我们必须掌握其表示的方法。 

1)立即数与直接地址。ata表示八位立即数,#data16表示是十六位立即数,data或 

direct表示直接地址。 

2)Rn(n=0-7)、A、B、CY、DPTR寄存器寻址变量。 

3)@R0、@R1、@DPTR、SP表示寄存器间址变量。 

4)DPTR+A、PC+A表示变址寻址的变量。 

5)PC+rel(相对量)表示相对寻址变量。 

记住指令的助记符,掌握不同寻址方式的指令操作数的表示方法,为我们记忆汇编指 

令打下了基础。MCS-51指令虽多,但按功能可分为五类, 

其中数据传送类2,算术运算类24条,逻辑操作类25条,控制转移类17条,布尔位操作 

类17条。在每类指令里,根据其功能,抓住其源、 

目的操作数的不同组合,再辅之以下方法,是完全能记住的。 

我们约定,可能的目的操作数按(#data/direct/A/Rn/@Ri)顺序表示。 

对于MOV指令,其目的操作数按A、Rn、direct、@Ri的顺序书写,则可以记住MOV的15 

条指令。例如以累加器A为目的操作数,可写出如下4条指令。 

MOV A,#data/direct/A/Rn/@Ri 

以此类推,写出其它指令。 

MOV Rn,#data/direct/A 

MOV direct,#data/direct/A/Rn/@Ri 

MOV @Ri,#data/direct/A 

2 指令图示记忆法 

图示记忆法是把操作功能相同或相似、但其操作数不同的指令,用图形和箭头将目 

的、源操作数的关系表示出来的一种记忆方法。 

例如:由助记符MOV、MOVX、MOVC组成的送数组指令,可以用图1、2帮助记忆。 

由助记符CJNE形成的四条指令,也可以用图示法表示,如图3。 

CJNE A,#data,rel CJNE A,direct,rel 

CJNE @Rn,#data,rel CJNE @Ri,#data,rel 

另外,对于由(ANL、ORL、ARL)形成的1逻辑操作指令,有关A的四条环移指令, 

也可以用图示法表示,请读者自行画出记忆。 

3 相似功能归类法 

在MCS-51指令中,我们发现部分指令其操作码不同,但功能相似,而操作数则完全一 

样。相似功能归类法就是把具有这样特点的指令放在一起记忆, 

只要记住其中的一条,其余的也就记住了。如加、减法的十二条指令,与、或、非的十八 

条指令,现列举如下。 

ADD/ADDC/SUBB A,#data/direct/Rn/@Ri 

ANL/ORL/XRL A,#data/direct/Rn/@Ri 

ANL/ORL/XRL direct,#data/a 

上述每一排指令,功能相似,其操作数都相同。其它的如加1(INC)、减1(DEC)指令也 

可照此办理。 

4 口诀记忆法 

对于有些指令,我们可以把相关的功能用精练的语言编成一句话来记忆。如PUSH 

direct和POP direct这两条指令。 

初学者常常分不清堆栈SP的变化情况,为此编成这样一句话:(SP的内容)加1(direct的内 

容)再入栈,(SP的内容)弹出(到direct单元)SP才减1。 

又如乘法指令中积的存放,除法指令中被除数和除数以及商的存放,都可以编成口诀记忆 

如下。 

MUL AB 高位积(存于)B,低位积(存于)A。 

DIV AB A除以B,商(存于)A余(下)B。 

上面介绍了几种快速记忆单片机指令的方法,希望能起到抛砖引玉的作用,相信读者 

在学习单片机的过程中能找到适合自己的方法来记忆。 

但是,有了好的方法还不够,还需要实践,即多读书上的例题和别人编写的程序,自己再 

结合实际编写一些程序。只有这样, 

才能更好更快地掌握单片机指令系统。

文档

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集一、数据传送类指令(7种助记符)MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(MoveCode)读取程序存储器数据表格的数据传送;MOVX(MoveExternalRAM)对外部RAM的数据传送;XCH(Exchange)字节交换;XCHD(Exchangelow-orderDigit)低半字节交换;PUSH(PushontoStack)入栈;POP(PopfromStack)出栈;二、算术运算类指令(8种助记符)ADD(A
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top