51单片机111条指令
C51汇编111条指令
54 逻辑与 ANL A, Rn 将累加器A的值和寄存器Rn的值进行与操作,结果保存到累加器A中
55 ANL A, direct 将累加器A的值和direct地址单元内的值进行与操作,结果保存到累加器A中
56 ANL A, @Ri 寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行与操作,结果保存到累加器A中
23 MOVX A , @DPTR 将DPTR寄存器所指外部RAM地址单元内的数据送累加器A
24 MOVX A, @Ri 寄存器Ri内为片外RAM地址,将该地址单元内的数据送累加器A
25 MOVX @Ri, A 寄存器Ri内为片外RAM地址,将该地址单元内的数据送累加器A
26 与ROM传送 MOVC A, @A+DPTR A+DPTR构成ROM地址,将该地址内的数据送累加器A内
85 CJNE A, #data, rel If(累加器A!= 立即数)则PC加2再加上rel作为目标地址
86 CJNE Rn, #data, rel If(寄存器Rn的值!= 立即数)则PC加2再加上rel作为目标地址
87 CJNE @Ri, #data, rel 寄存器Ri内为RAM地址,If(该地址单元的值!= 立即数)则PC加2再加上rel作为目标地址
66 逻辑异或 XRL A, Rn 将累加器A的值和寄存器Rn的值进行异或操作,结果保存到累加器A中
67 XRL A, direct 将累加器A的值和direct地址单元内的值进行异或操作,结果保存到累加器A中
68 XRL A, @Ri 寄存器Ri内为RAM地址,将累加器A的值和该地址单元内的值进行异或操作,结果保存到累加器A中
控制转移指令
MCS-51系列单片机指令系统共有111条指令,其中有49条单字节指令、45条双字节指令和17条三字节指令。
XCH A,Rn ;(A)←→(Rn)累加器与工作寄存器Rn中的内容互换
XCH A,@Ri ;(A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的内容互换
XCH A,data ;(A)←→(data)累加器与直接地址单元中的内容互换
[8]. 十进制调整指令(1条)
在进行BCD码运算时,这条指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进行调整和修正。
DA A
XCHD A,@Ri ;(A 3-0 )←→((Ri) 3-0 )累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换
SWAP A ;(A 3-0 )←→(A 7-4 )累加器中的内容高低半字节互换
[9]. 16位数据传送指令(1条)
这条指令的功能是把16位常数送入数据指针寄存器。
PUSH data ;(SP)+1→(SP),(data)→(SP) 堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中
POP data ;(SP)→(data)(SP)-1→(SP), 堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作
[8]. 交换指令(5条)
MOV Rn,data ;(data)→(Rn) 直接寻址单元中的内容送到寄存器Rn中
MOV Rn,#data ;#data→(Rn) 立即数直接送到寄存器Rn中
MOV Rn,A ;(A)→(Rn) 累加器A中的内容送到寄存器Rn中
[3]. 以直接地址为目的操作数的指令(5条)
这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。有直接、立即、寄存器和寄存器间接4种寻址方式:
51单片机指令大全
51单片机指令大全1 MOV A,Rn 寄存器内容送入累加器2 MOV A,direct 直接地址单元中的数据送入累加器3 MOV A,@Ri 间接RAM 中的数据送入累加器4 MOV A,#tata 立即数送入累加器5 MOV Rn,A 累加器内容送入寄存器6 MOV Rn,direct 直接地址单元中的数据送入寄存器7 MOV Rn,#data 立即数送入寄存器8 MOV direct,A 累加器内容送入直接地址单元9 MOV direct,Rn 寄存器内容送入直接地址单元10 MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元11 MOV direct,@Ri 间接RAM 中的数据送入直接地址单元12 MOV direct,#data 立即数送入直接地址单元13 MOV @Ri,A 累加器内容送间接RAM 单元14 MOV @Ri,direct 直接地址单元数据送入间接RAM 单元15 MOV @RI,#data 立即数送入间接RAM 单元16 MOV DRTR,#dat16 16 位立即数送入地址寄存器17 MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器18 MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器19 MOVX A,@Ri 外部RAM(8 位地址)送入累加器20 MOVX A,@DPTR 外部RAM(16 位地址)送入累加器21 MOVX @Ri,A 累计器送外部RAM(8 位地址)22 MOVX @DPTR,A 累计器送外部RAM(16 位地址)23 PUSH direct 直接地址单元中的数据压入堆栈24 POP direct 弹栈送直接地址单元25 XCH A,Rn 寄存器与累加器交换26 XCH A,direct 直接地址单元与累加器交换27 XCH A,@Ri 间接RAM 与累加器交换28 XCHD A,@Ri 间接RAM 的低半字节与累加器交换算术操作类指令:1 ADD A,Rn 寄存器内容加到累加器2 ADD A,direct 直接地址单元的内容加到累加器3 ADD A,@Ri 间接ROM 的内容加到累加器4 ADD A,#data 立即数加到累加器5 ADDC A,Rn 寄存器内容带进位加到累加器6 ADDC A,direct 直接地址单元的内容带进位加到累加器7 ADDC A,@Ri 间接ROM 的内容带进位加到累加器8 ADDC A,#data 立即数带进位加到累加器9 SUBB A,Rn 累加器带借位减寄存器内容10 SUBB A,direct 累加器带借位减直接地址单元的内容11 SUBB A,@Ri 累加器带借位减间接RAM 中的内容12 SUBB A,#data 累加器带借位减立即数13 INC A 累加器加114 INC Rn 寄存器加115 INC direct 直接地址单元加116 INC @Ri 间接RAM 单元加117 DEC A 累加器减118 DEC Rn 寄存器减1 1 1219 DEC direct 直接地址单元减120 DEC @Rj 间接RAM 单元减 121 INC DPTR 地址寄存器DPTR 加 122 MUL AB A 乘以B,结果放在A23 DIV AB A 除以B,结果放在A24 DA A 累加器十进制调整布尔变量操作类指令:1 CLR C 清进位位2 CLR bit 清直接地址位3 SETB C 置进位位4 SETB bit 置直接地址位5 CPL C 进位位求反6 CPL bit 置直接地址位求反7 ANL C,bit 进位位和直接地址位相“与”8 ANL C,bit 进位位和直接地址位的反码相“与”9 ORL C,bit 进位位和直接地址位相“或”10 ORL C,bit 进位位和直接地址位的反码相“或”11 MOV C,bit 直接地址位送入进位位12 MOV bit,C 进位位送入直接地址位13 JC rel 进位位为1 则转移14 JNC rel 进位位为0 则转移15 JB bit,rel 直接地址位为1 则转移16 JNB bit,rel 直接地址位为0 则转移17 JBC bit,rel 直接地址位为1 则转移,该位清零逻辑操作数指令:1 ANL A,Rn 累加器与寄存器相“与”2 ANL A,direct 累加器与直接地址单元相“与”3 ANL A,@Ri 累加器与间接RAM 单元相“与”4 ANL A,#data 累加器与立即数相“与”5 ANL direct,A 直接地址单元与累加器相“与”6 ANL direct,#data 直接地址单元与立即数相“与”7 ORL A,Rn 累加器与寄存器相“或”8 ORL A,direct 累加器与直接地址单元相“或”9 ORL A,@Ri 累加器与间接RAM 单元单元相“或”10 ORL A,#data 累加器与立即数相“或”11 ORL direct,A 直接地址单元与累加器相“或”12 ORL direct,#data 直接地址单元与立即数相“或”13 XRL A,Rn 累加器与寄存器相“异或”14 XRL A,direct 累加器与直接地址单元相“异或”15 XRL A,@Ri 累加器与间接RAM 单元单元相“异或”16 XRL A,#data 累加器与立即数相“异或”17 XRL direct,A 直接地址单元与累加器相“异或”18 XRL direct,#data 直接地址单元与立即数相“异或”19 CLR A 累加器清“0”20 CPL A 累加器求反21 RL A 累加器循环左移22 RLC A 累加器带进位位循环左移23 RR A 累加器循环右移24 RRC A 累加器带进位位循环右移25 SWAP A 累加器半字节交换控制转移类指令:1 ACALL addr11 绝对(短)调用子程序2 LCALL addr16 长调用子程序3 RET 子程序返回4 RETI 中数返回5 AJMP addr11 绝对(短)转移6 LJMP addr16 长转移7 SJMP rel 相对转移8 JMP @A+DPTR 相对于DPTR 的间接转移9 JZ rel 累加器为零转移10 CJNE rel 累加器非零转移11 CJNE A,direct,rel 累加器与直接地址单元比较,不相等则转移12 CJNE A,#data,rel 累加器与立即数比较,不相等则转移13 CJNE Rn,#data,rel 寄存器与立即数比较,不相等则转移14 CJNE @Ri,#data,rel 间接RAM 单元与立即数比较,不相等则转移15 DJNZ Rn,rel 寄存器减1,非零转移16 DJNZ direct,erl 直接地址单元减1,非零转移17 NOP 空操作。
传送类指令
DPTR 3000H
A
Eg:MOV DPTR, #3000H
MOV A, #55H
MOVC A, @A+DPTR
如何记忆这些指令?
• 对于MOV指令,其目的操作数按A、Rn、direct、@Ri的 顺序书写,则可以记住MOV的15条指令。例如:
•
MOV A,#data/direct/Rn/@Ri
MOV Rn,#data/direct/A
MOV direct,#data/direct/A/Rn/@Ri
MOV @Ri,#data/direct/A
数据传送和交换类指令
• (1) 数据传送类指令共29条,它是指令系统中最活跃、使用最 多的一类指令。一般的操作是把源操作数传送到目的操作数 , 即指令执行后目的操作数改为源操作数 ,而源操作数保持不变。 (2)psw寄存器影响:数据传送类指令不影响进位标志CY、半 进位标志AC和溢出标志OV,但当传送或交换数据后影响累加器A 的值时,奇偶标志P的值则按A的值重新设定。
地址 相加=3055H
3055H 66H
A 取出
66H
55H
分析执行下列程序后A的值是多少?
• MOV A, #01H • MOV DPTR, #M2 • MOVC A ,@A+DPTR • M1:RET • M2:DB 0,1,4,9……
• 例:在累加器A中存放有0~9间的某个数,现要求查出该数 的平方数,并数值传回累加器。
51指令汇总表
MCS51单片机指令汇总表51指令概况:44个助记符、33种功能、111条指令、255种机器码。
111条指令中:指令长度──单字节49、双字节46、三字节16执行时间──单周期64、双周期45、四周期2计算机指令执行时间的相关概念:●时钟——利用振荡电路产生稳定、均匀的方波(脉冲),作为所有电路动作的节拍信号。
(保证数字电路动作的步调一致。
几百万、上千万个门电路不能各自为政!)●时钟周期——振荡电路的振荡周期,这是指令动作的最小时间单位。
●机器周期——固定的若干时钟周期作为一个较大时间单位,这是完成指令一个分解动作需要的时间。
51单片机是以12个时钟周期为一个机器周期。
●指令周期——执行一条指令需要的机器周期数(只能是整数)。
注意:从机器周期的定义可以看出,一条指令的执行时间是以机器周期为单位,不是以时钟周期为单位。
这也有助于反过来理解为什么有机器周期这个单位。
111条指令分为5类:数据传送29条(8个助记符)算术操作24条(8个助记符)逻辑操作24条(9个助记符)控制转移17条(13个助记符)布尔操作17条(11个助记符,其中与前面重复5个)下面的指令表中,“字节数”一栏是该指令翻译成机器码(2进制形式)的长度,指令长度是以字节为单位,或1字节、或2字节、或3字节(其它CPU的指令系统可能还有更长的),不存在非整数字节的情况。
下面的指令表中,“振荡器周期”一栏就是时钟周期数,51单片机以12个振荡周期=1个机器周期,可以看出51的指令执行时间或是1机器周期、或是2机器周期、或是4机器周期。
数据传送指令一览表位操作指令一览表:。
常见51单片机指令及详解
常见51单片机指令及详解1. 简介单片机是一种集成电路,具备处理和控制功能。
51单片机是指Intel公司推出的一系列8位单片机,常用于嵌入式系统和物联网设备。
本文将介绍一些常见的51单片机指令,并对其进行详解。
2. 数据传送指令2.1 MOV指令MOV指令用于将数据从一个寄存器或内存位置传送到另一个寄存器或内存位置。
例如:MOV A, #10 ;将立即数10传送给累加器AMOV R0, R1 ;将寄存器R1的值传送给R02.2 XCH指令XCH指令用于交换两个寄存器或内存位置中的数据。
例如:XCH A, B ;交换累加器A和B的值3. 算术运算指令3.1 ADD指令ADD指令用于将两个操作数相加,并将结果保存在累加器中。
例如:ADD A, B ;将累加器A和寄存器B的值相加,结果存储在A中3.2 SUBB指令SUBB指令用于将第二个操作数的补码与累加器的值相减,并将结果存储在累加器中。
例如:SUBB A, B ;将B的补码与累加器A的值相减,结果存储在A中4. 逻辑运算指令4.1 ANL指令ANL指令用于对两个操作数进行按位与运算,并将结果存储在目的操作数中。
例如:ANL A, B ;将累加器A和寄存器B的值按位与,结果存储在A 中4.2 ORL指令ORL指令用于对两个操作数进行按位或运算,并将结果存储在目的操作数中。
例如:ORL A, B ;将累加器A和寄存器B的值按位或,结果存储在A 中5. 跳转指令5.1 JMP指令JMP指令用于无条件跳转至指定的目标地址。
例如:JMP 2000H ;跳转至内存地址2000H处执行指令5.2 JZ指令JZ指令用于在累加器为零时跳转至指定的目标地址。
例如:JZ 3000H ;当累加器为零时,跳转至内存地址3000H处执行指令6. 输入输出指令6.1 IN指令IN指令用于将外部设备的数据输入到累加器或指定的寄存器中。
例如:IN A, P1 ;将P1端口的数据输入到累加器A中6.2 OUT指令OUT指令用于将累加器或指定的寄存器中的数据输出到外部设备。
51单片机指令
MCS-51共有111条指令,可分为5类:[1].数据传送类指令(共29条)[2].算数运算类指令(共24条)[3].逻辑运算及移位类指令(共24条)[4].控制转移类指令(共17条)[5].布尔变量操作类指令(共17条)一些特殊符号的意义Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。
Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)direct—内部数据存储单元的8位地址。
包含0—127(255)内部存储单元地址和特殊功能寄存地址。
#data—指令中的8位常数。
#data16—指令中的16位常数。
addr16—用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。
#addr11—用于ACALL和AJMP指令中的11目的地地址,目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间之中。
rel—8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节对于下条指令的第一个字节开始的-128——+127范围内。
@—间接寄存器寻址或基址寄存器的前缀。
/—为操作的前缀,声明对该位操作书取反。
DPTR—数据指针。
bit—内部RAM和特殊功能寄存器的直接寻址位。
A—累加器。
B—累加器B。
用于乘法和除法指令中。
C—进位标志位。
(x)—某地址单元中的内容。
((x))—由X寻址单元中的内容。
MCS-51的寻址方式[1].直接寻址指令中操作数直接以单元地址形式出现,例如:MOV A,68H这条指令的意义是把内部RAM中的68H单元中的数据内容传送到累加器A中。
值得注意的是直接寻址方式只能使用8位二进制地址,因此这种寻址方式仅限于内部RAM进行寻址。
低128位单元在指令中直接以单元地址的形式给出。
对于特殊功能寄存器可以使用其直接地址进行访问,还可以以它们的符号形式给出,只是特殊功能寄存器只能用直接寻址方式访问,而无其它方法。
51单片机指令表汇总
51单片机指令表汇总51 单片机是一种广泛应用于电子工程和嵌入式系统开发的微控制器。
要熟练掌握 51 单片机的编程,了解其指令表是至关重要的。
下面就为大家汇总一下 51 单片机的常见指令。
数据传送类指令MOV 指令:这是最基本的数据传送指令,用于在寄存器之间、寄存器与存储器之间传送数据。
例如,“MOV A, 50H”就是将立即数 50H传送到累加器 A 中。
MOVX 指令:用于在片外数据存储器和累加器 A 之间进行数据传送。
比如“MOVX A, @DPTR”,将片外数据存储器中由数据指针 DPTR 所指定单元的内容传送到累加器 A 中。
MOVC 指令:用于访问程序存储器中的数据表格。
“MOVC A, @A+DPTR”是常见的用法。
算术运算类指令ADD 指令:实现加法运算。
像“ADD A, R0”就是将累加器 A 的内容和寄存器 R0 的内容相加,结果存放在累加器 A 中。
ADDC 指令:带进位加法指令。
考虑了上一次运算产生的进位标志。
SUBB 指令:用于减法运算,并且会考虑借位标志。
逻辑运算类指令ANL 指令:进行逻辑与操作。
例如“ANL A, R0”,将累加器 A 和寄存器 R0 的内容进行逻辑与运算,结果存放在累加器 A 中。
ORL 指令:执行逻辑或操作。
XRL 指令:实现逻辑异或运算。
控制转移类指令JC 指令:若进位标志为 1 则跳转。
JZ 指令:若累加器 A 的内容为 0 则跳转。
LJMP 指令:长跳转指令,可以跳转到 64KB 程序存储器空间的任意位置。
位操作类指令SETB 指令:将指定的位设置为 1。
例如“SETB P10”,将 P1 端口的第 0 位置 1。
CLR 指令:把指定的位清零。
这些只是 51 单片机指令的一部分,实际应用中还有更多的指令和组合使用方式。
在编程时,合理选择和运用这些指令能够实现各种复杂的功能。
比如,通过数据传送指令来初始化变量和读取外部数据;利用算术运算指令进行数值计算;借助逻辑运算指令处理逻辑关系;使用控制转移指令实现程序的分支和循环;运用位操作指令控制单个引脚的状态。
MCS-51单片机指令系统包括111条指令
30H
Eg:MOV A,30H
A XX A
结果 结果
A 33H 30H 10H
Copyright 2006
33H
Eg:MOV A,#10H
10H
XX
E.g.: MOV A,R2
R2 33H
A XX
A 33H
E.g. : MOV A,@R0
地址
R0 55H
55H
取出
A 78H
78H
注意:在使用 进行间址寻址时 只能够使用R0和 。 进行间址寻址时, 注意:在使用Ri进行间址寻址时,只能够使用 和R1。
Copyright 2006
以通用寄存器Rn为目的的传送指令: 条 以通用寄存器 为目的的传送指令:( 3条) 为目的的传送指令
Copyright 2006
2.2.1
数据传送和交换类指令
常用助记符: 常用助记符: MOV 单片机内部RAM中的数据传递 MOVX 累加器和单片机外部数据存储器间数据传递 MOVC 累加器和程序存储器之间的数据传递 XCH 累加器和某个内部RAM单元进行数据交换 XCHD 累加器和某个内部RAM单元进行低半字节数据交换 PUSH 将某个内部RAM单元的数据压入堆栈 POP 将堆栈内的数据弹出
Copyright 2006
六、字节交换指令
字节交换指令指内部RAM中的某个单元和累加器 之间进行 中的某个单元和累加器A之间进行 字节交换指令指内部 中的某个单元和累加器 数据交换,可以是整个字节,也可以是半个字节。包含3种交换 数据交换,可以是整个字节,也可以是半个字节。包含 种交换 方式: 方式: 1、整字节交换指令: 、整字节交换指令: XCH A, Rn ; (A) ← →(Rn) , XCH A, direct ; (A) ← →(direct) XCH A, @Ri ; (A) ← →((Ri))
MCS-51指令表(共111条) 完整版
4条3条5条1条MCS-51指令表(共111条)操作码指令格式 (助记符) 功能简述对标志位影响字节周期备注P OV AC CY数据传送指令E8~EF MOV A, Rn 寄存器送累加器Y N N N 1 1 E5 MOV A ,direct 直接寻址单元送累加器Y N N N 2 1 E6,E7 MOV A ,@Ri 内部RAM单元送累加器Y N N N 1 1 74MOV A ,#data 立即数送累加器Y N N N 2 1 F8~FF MOV Rn,A 累加器送寄存器N N N N 1 1 A8~AF MOV Rn ,direct 直接寻址单元送寄存器N N N N 2 2 78~7F MOV Rn,#data 立即数送寄存器N N N N 2 1F5MOV direct ,A 累加器送直接寻址单元N N N N 2 1 88~8F MOV direct ,Rn 寄存器送直接寻址单元N N N N 2 2 85MOV direct1,direct2直接寻址单元2送1 N N N N 3 286,87MOV direct ,@Ri 内部RAM单元送直接寻址单元N N N N 2 275MOV direct ,#data立即数送直接寻址单元N N N N 3 2F6,F7MOV @Ri ,A 累加器送内部RAM单元N N N N 1 1A6,A7MOV @Ri ,direct 直接寻址单元送内部RAM单元N N N N 2 276,77 MOV @Ri ,#data 立即数送内部RAM单元N N N N 2 190MOV DPTR ,16位立即数送数据指针N N N N 3 2 3条#data1693 MOVC A ,@A+DPTR查表数据送累加器(DPTR为基址) Y N N N 1 2 83 MOVC A ,@A+PC查表数据送累加器(PC 为基址)Y N N N 1 2 E2,E3 MOVX A ,@Ri外部RAM 单元送累加器(8位地址)Y N N N 1 2E0MOVX A ,@DPTR外部RAM 单元送累加器(16位地址)Y N N N 1 2 F2,F3MOVX @Ri ,A累加器送外部RAM 单元(8位地址)N N N N 1 2F0MOVX @DPTR ,A累加器送外部RAM 单元(16位地址) N N N N 1 2 C0 PUSH direct 直接寻址单元压入栈顶 N N N N 2 2 D0 POP direct 栈顶弹出指令直接寻址单元N N N N 2 2 C8~CF XCH A ,Rn累加器与寄存器交换Y N N N 1 1C5XCH A ,direct累加器与直接寻址单元交换Y N N N 1 1 C6,C7XCH A ,@Ri累加器与内部RAM 单元交换Y N N N 2 1D6,D7XCHD A ,@Ri累加器与内部RAM 单元低4位交换Y N N N 1 1算术运算类指令2条4条28~2F ADD A , Rn 累加器加寄存器Y Y Y Y 1 125 ADD A , direct 累加器加直接寻址单元 Y Y Y Y 2 1 26,27 ADD A , @Ri累加器加内部RAM 单元 Y Y Y Y 1 124 ADD A , #data 累加器加立即数Y Y Y Y 2 1 38~3FADDC A , Rn累加器加寄存器和进位标志Y Y Y Y 1 135ADDC A , direct累加器加直接寻址单元和进位标志Y Y Y Y 2 1 36,37ADDC A , @Ri累加器加内部RAM 单元和进位标志Y Y Y Y 1 134ADDC A , #data累加器加立即数和进位标志Y Y Y Y 2 198~9FSUBB A , Rn累加器减寄存器和进位标志Y Y Y Y 1 195SUBB A , direct累加器减直接寻址单元和进位标志Y Y Y Y 2 1 96,97SUBB A , @Ri累加器减内部RAM 单元和进位标志Y Y Y Y 1 194 SUBB A , #data 累加器减立即数和进位标志 Y Y Y Y 2 1 04 INC A 累加器加1 Y N N N 1 1 08~0F INC Rn 寄存器加1 N N N N 1 1 05 INC direct 直接寻址单元加1 N N N N 2 1 06,07 INC @Ri 内部RAM 单元加1 N N N N 1 1 A3INC DPTR数据指针加11 214 DEC A 累加器减1 Y N N N 1 1 18~1F DEC Rn 寄存器减1 N N N N 1 1 15 DEC direct 直接寻址单元减1 N N N N 2 1 16,17 DEC @Ri 内部RAM单元减1 N N N N 1 1A4 MUL AB 累加器乘寄存器B Y Y N Y 1 4 16位积的低位在A中,高位在B中84 DIV AB 累加器除以寄存器B Y Y N Y 1 4商在A中,余数在B中D4 DA A 十进制调整Y Y Y Y 1 1逻辑运算类指令58~5F ANL A, Rn 累加器与寄存器Y N N N 1 155 ANL A, direct 累加器与直接寻址单元Y N N N 2 156,57 ANL A, @Ri 累加器与内部RAM单元Y N N N 1 154 ANL A, #data 累加器与立即数Y N N N 2 152 ANL direct, A 直接寻址单元与累加器N N N N 2 153ANL direct,#data直接寻址单元与立即数N N N N 3 248~4F ORL A, Rn 累加器或寄存器Y N N N 1 145 ORL A,direct 累加器或直接寻址单元Y N N N 2 146,47 ORL A,@Ri 累加器或内部RAM单元Y N N N 1 144 ORL A,#data 累加器或立即数Y N N N 2 142 ORL direct, A 直接寻址单元或累加器N N N N 2 143ORL direct,#data直接寻址单元或立即数N N N N 3 2 68~6F XRL A, Rn 累加器异或寄存器Y N N N 1 1 65 XRL A,direct 累加器异或直接寻址单元Y N N N 2 1 66,67 XRL A,@Ri 累加器异或内部RAM单元Y N N N 1 1 64 XRL A,#data 累加器异或立即数Y N N N 2 162 XRL direct, A 直接寻址单元异或累加器N N N N 2 163XRL direct,#data直接寻址单元异或立即数N N N N 3 2 E4 CLR A 累加器清零Y N N N 1 1 F4 CPL A 累加器取反N N N N 1 1 23 RL A 累加器左循环移位N N N N 1 133 RLC A 累加器连进位标志左循环移位Y N N Y 1 13 RR A 累加器右循环移位N N N N 1 113 RRC A 累加器连进位标志右循环移位Y N N Y 1 1C4 SWAP A累加器高4位与低4位交换N N N N 1 1 位操作类指令C3 CLR C C清零N N N Y 1 1 C2 CLR bit 直接寻址位清零N N N 2 1 D3 SETB C C置位N N N Y 1 1 D2 SETB bit 直接寻址位置位N N N 2 1B3 CPL C C取反N N N Y 1 1B2 CPL bit 直接寻址位取反N N N 2 182 ANL C, bit C逻辑与直接寻址位N N N Y 2 2B0 ANL C, /bit C逻辑与直接寻址位的反N N N Y 2 272 ORL C, bit C逻辑或直接寻址位N N N Y 2 2A0 ORL C, /bit C逻辑或直接寻址位的反N N N Y 2 2A2 MOV C, bit 直接寻址位送C N N N Y 2 192 MOV bit, C C送直接寻址位N N N N 2 2控制转移指令xxx10001 A CALL addr11 2KB范围内绝对调用N N N N 2 212 LCALL addr16 64KB范围内长调用N N N N 3 222 RET 子程序返回N N N N 1 232 RETI 中断返回N N N N 1 2xxx00001 A JMP addr11 2KB范围内绝对转移N N N N 2 22 LJMP addr16 64KB范围内长转移N N N N3 280 SJMP rel 相对短转移N N N N 2 273 JMP @A+DPTR 相对长转移N N N N 1 2 用于分枝散转60 JZ rel 累加器为零转移N N N N 2 270 JNZ rel 累加器非零转移N N N N 2 240 JC rel C为1转移N N N N 2 250 JNC rel C为零转移N N N N 2 220 JB bit,rel 直接寻址位为1转移N N N N 3 230JNB bit ,rel 直接寻址为0转移 N N N N 3 210JBC bit ,rel直接寻址位为1转移并清该位N N N N 3 2B5CJNE A ,direct ,rel累加器与直接寻址单元不等转移 N N N Y 3 2A 大于等于direct 时清C, A 小于direct 时置CB4CJNE A ,#data ,rel累加器与立即数不等转移N N N Y 3 2 A 大于等于#data 时清C, A小于#data 时置C B8~BFCJNE Rn ,#data ,rel寄存器与立即数不等转移N N N Y 3 2 Rn 大于等于#data 时清C, Rn 小于#data 时置C B6,B7CJNE @Ri ,#data ,rel RAM 单元与立即数不等转移 N N N Y 3 2@Ri 大于等于#data 时清C, @Ri 小于#data 时置CD8~DF DJNZ Rn ,rel 寄存器减1不为零转移 N N N N 2 2 D5DJNZ direct ,rel直接寻址单元减1不为零转N N N N 3 2移0 NOP 空操作N N N N 1 1。
51单片机汇编指令
MCS-51汇编指令(111条)数据传送指令(28)一、内部数据传送指令(15条)1、立即寻址型传送指令MOV A, #data ;A←dataMOV Rn, #data ;Rn←dataMOV @Ri, #data ;(Ri)←dataMOV direct, #data ;direct ←data2、直接寻址型传送指令MOV A, direct ;A←(direct)MOV direct, A ;direct←AMOV Rn, direct ;Rn←(direct)MOV @Ri, direct ;(Ri)←(direct)MOV direct2, direct1 ;direct2←(direct1)3、寄存器寻址型传送指令MOV A,Rn;A←RnMOV Rn, A ;Rn←AMOV direct,Rn;direct←Rn4、寄存器间址型传送指令MOV A, @Ri ;A←(Ri)MOV @Ri, A ;(Ri)←AMOV direct, @Ri ;direct←(Ri)二、外部数据传送指令(7条)1、16位数据传送指令MOV DPTR, #data16 ;DPTR←data162、外部ROM的字节传送指令MOVC A, @A+DPTR ;A←(A+DPTR)MOVC A, @A+PC ;PC←PC+1,A←(A+PC)3、外部RAM的字节传送指令MOVX A,@Ri ;A←(Ri)MOVX @Ri,A ;(Ri)←AMOVX A,@DPTR ;A←(DPTR)MOVX @DPTR,A ;(DPTR)←A三、堆栈操作指令(2条)1、压栈指令PUSH direct ;SP←SP+1,(SP)←(direct) 2、弹出指令POP direct ;(SP)→direct, SP-1→ SP四、数据交换指令(4条)XCH A,Rn;A↔RnXCH A, direct;A↔directXCH A, @Ri ;A↔(Ri)XCH A, @Ri;A3~0↔(Ri)3~0一、加法指令(13条)1、不带Cy的加法指令ADD A, Rn ;A←A+RnADD A, direct ;A←A+(direct)ADD A, @Ri ;A←A+(Ri)ADD A, #data ;A←A+data2、带Cy的加法指令ADDC A, Rn ;A←A+Rn+CyADDC A, direct ;A←A+(direct) +CyADDC A, @Ri ;A←A+(Ri) +CyADDC A, #data ;A←A+data+Cy3、加1指令INC A ;A←A+1 (对奇偶校验位P有影响)INC Rn ;Rn←Rn+1INC direct ;direct←(direct)+1INC @Ri ;(Ri) ← (Ri) +1INC DPTR ;DPTR←DPTR+1(唯一的16位运算指令)二、减法指令(8条)1、带Cy的减法指令(4条)SUBB A, Rn ;A←A-Rn-CySUBB A, direct ;A←A-(direct) -CySUBB A, @Ri ;A←A-(Ri) -CySUBB A, #data ;A←A-data-Cy2、减1指令(4条)DEC A ;A←A-1(对奇偶校验位P有影响)DEC Rn ;Rn←Rn-1DEC direct ;direct←(direct)-1DEC @Ri ;(Ri) ← (Ri) -1三、十进制调整指令(1条)DA A ;若AC=1或A3~A0 > 9 ,则A←A+06H ;若Cy=1或A7~A4 > 9 ,则A←A+60H;对进位标志位Cy和AC有影响。
51单片机111条指令
51单片机111条指令一览表指令字节周期动作说明算数运算指令1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器12.SUBB A,#data 2 1 将累加器的值减常数值减借位C,结果存回累加器13.INC A 1 1 将累加器的值加114.INC Rn 1 1 将寄存器的值加l15.INC direct 2 1 将直接地址的内容加116.INC @Ri 1 1 将间接地址的内容加117.INC DPTR 1 1 数据指针寄存器值加1说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位18.DEC A 1 1 将累加器的值减119.DEC Rn 1 1 将寄存器的值减120.DEC direct 2 1 将直接地址的内容减121.DEC @Ri 1 1 将间接地址的内容减122.MUL AB 1 4 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。
MCS-51单片机指令全总结
MCS-51单片机指令全总结MCS-51单片机指令全总结MCS-51单片机指令总结(1)操作数中有direct、#data、bit的都是2字节指令;(2)在操作数中没有以上三个变量却有@标志的都是1字节指令;(3)凡是3字节指令的都是两周期的指令;(4)乘除是单字节四周期的指令;(5)字节调用指令、字节/位转移指令、字节/位逻辑指令、进/出栈指令、返回指令、INCDPTR、MOVdirect,Rn、MOVRn,direct、MOVdirect,@Ri、MOV@Ri,direct、MOVX(外部数据)以及MOVC(程序寄存器)都是2周期指令;(6)凡是direct、#data在一起的,数值比较转移指令(CJNE)、减1条件转移指令(DJNZ)、位条件转移指令(JB/JNB)、位条件清0转移指令(JBC)、长调用指令(LCALL)、长转移指令(LJMP)、MOVDPTR,#data16都是3字节指令;(7)绝对调用指令(ACALL)、绝对转移指令(AJMP)、减1条件转移指令(DJNZ)、累加器位条件转移指令(JC/JNC)、判0转移指令(JZ/JNZ)、短转移指令(SJMP)都是2字节指令;(8)其他指令都是1字节1周期指令,所有指令中无3周期指令;以上即51单片机所有指令的汇总,如有不足,敬请指正。
20xx-10-20扩展阅读:MCS-51单片机学习及其心得MCS-51单片机学习及其心得机械电子工程学院09电子(2)班曹小迪20xx1033023620xx-20xx上学年我们专业开设了MCS-51单片机的原理及接口技术这么专业课程,对于电子专业学生的我们是非常有必要的。
单片机是一切自动智能电子产品必须具备的一个不可或缺的控制中枢系统。
通俗点讲就是电子产品的“大脑”。
所以学习单片机对于做电子设计的我们来说有着远的意义。
MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
51单片机汇编指令集(附记忆方法)
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。
MCS-51单片机指令表(打印版)
数据存储器数据存储器也称为随机存取数据存储器。
数据存储器分为内部数据存储和外部数据存储。
MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),片外最多可扩展64KB的RAM,构成两个地址空间,访问片内RAM用“MOV”指令,访问片外RAM用“MOVX”指令。
它们是用于存放执行的中间结果和过程数据的。
MCS-51的数据存储器均可读写,部分单元还可以位寻址。
MCS-51单片机的内部数据存储器在物理上和逻辑上都分为两个地址空间,即:数据存储器空间(低128单元);特殊功能寄存器空间(高128单元);这两个空间是相连的,从用户角度而言,低128单元才是真正的数据存储器。
下面我们就来详细的与大家讲解一下:低128单元:片内数据存储器为8位地址,所以最大可寻址的范围为256个单元地址,对片外数据存储器采用间接寻址方式,R0、R1和DPTR都可以做为间接寻址寄存器,R0、R1是8位的寄存器,即R0、R1的寻址范围最大为256个单元,而DPTR是16位地址指针,寻址范围就可达到64KB。
也就是说在寻址片外数据存储器时,寻址范围超过了256B,就不能用R0、R1做为间接寻址寄存器,而必须用DPTR寄存器做为间接寻址寄存器。
从上图中我们可以看到,8051单片机片内RAM共有256个单元(00H-FFH),这256个单元共分为两部分。
其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。
从80H—FFH 地址单元(也是128个字节)为特殊寄存器(SFR)单元。
从下图中可清楚地看出它们的结构分布。
1、通用寄存器区(00H-1FH)在00H—1FH共32个单元中被均匀地分为四块,如下图,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。
这四块中的寄存器都称为R0—R7,那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器——程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的D3和D4位(RS0和RS1),即可选中这四组通用寄存器。
1解:8051的指令系统由111条指令组成如果按字节数分类
1001.解:8051的指令系统由111条指令组成。
如果按字节数分类,有49条单字节指令46条双字节指令和16条三字节指令,以单字节指令为主;如果按照指令执行时间分类,有64条单周期指令、45条双周期指令和2条四周期指令,以单周期指令为主。
8051的指令系统具有以下特点:(1)存储效率高、执行速度快,可以进行直接地址到直接地址的数据传送,能把一个并行I/O 口中的内容传送到内部RAM 单元中而不必经过累加器A 或工作寄存器Rn 。
这样可以大大提高传送速度和缓解累加器A 的瓶颈效应。
(2)用变址寻址方式访问程序存储器中的表格,将程序存储器单元中的固定常数或表格字节内容传送到累加器A 中。
这为编成翻译算法提供了方便。
(3)在算术运算指令中设有乘法和除法指令(4)指令系统中一些对I/O 口进行操作的指令具有“读——修改——写”的功能。
这一功能指:在执行读锁存器的指令时,CPU 首先完成将锁存器的值通过缓冲器BUF2度入内部,进行修改、改变,然后重新写到锁存器中去。
这种类型指令包含所有的逻辑操作和位操作指令。
(5)8051单片机内部有一个布尔处理器,对为地址空间具有丰富的位操作指令。
布尔操作类指令有17条,包括布尔传送指令、布尔状态控制指令、布尔逻辑操作指令、布尔条件转移指令。
2.解:MCS-51单片机指令系统按功能可分为5类:(1)数据传送指令 (2)算术运算指令(3)逻辑运算和移位指令 (4)控制转移指令(5)位操作指令MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表:3.解: 访问特殊功能寄存器,应采用直接寻址、位寻址方式。
访问外部数据存储器,应采用寄存器间接寻址方式。
在0~255B 范围内,可用寄存器R0、R1间接寻址:MOVX A ,@R0 或 MOVX A ,@R1寻址方式 使用的变量 寻址范围 立即寻址 程序存储器直接寻址内部RAM 低128个字节; 特殊功能寄存器SFR寄存器寻址 R0~R7;A 、B 、DPTR 、C寄存器间接寻址 @R0、@R1、SP 内部RAM 、堆栈指针SP @R0、@R1、@DPTR 外部RAM变址寻址 @A+PC 、@A+DPTR 程序存储器 相对寻址 PC+偏移量 程序存储器位寻址内部RAM 低128B 位寻址区 可位寻址的特殊功能寄存器位2MOVX @R0,A 或MOVX @R1,A在0~64KB范围内,可用16位寄存器DPTR间接寻址:MOVX A,@DPTRMOVX @DPTR,A4.解:这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机111条指令一览表指令字节周期动作说明算数运算指令1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器12.SUBB A,#data 2 1 将累加器的值减常数值减借位C,结果存回累加器13.INC A 1 1 将累加器的值加114.INC Rn 1 1 将寄存器的值加l15.INC direct 2 1 将直接地址的内容加116.INC @Ri 1 1 将间接地址的内容加117.INC DPTR 1 1 数据指针寄存器值加1说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位18.DEC A 1 1 将累加器的值减119.DEC Rn 1 1 将寄存器的值减120.DEC direct 2 1 将直接地址的内容减121.DEC @Ri 1 1 将间接地址的内容减122.MUL AB 1 4 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。
如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0 23.DIV AB 1 4 将累加器的值除以B寄存器的值,结果的商存回累加器,余数存回B寄存器说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。
执行本指令后,进位位(C)及溢出位(OV)被清除为024.DA A 1 1 将累加器A作十进制调整,若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6若(A) 7-4>9或(C)=1,则(A) 7-4←(A)7-4+6逻辑运算指令25.ANL A,Rn 1 1 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器26.ANL A,direct 2 1 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器27.ANL A,@Ri 1 1 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器28.ANL A,#data 2 1 将累加器的值与常数做AND的逻辑判断,结果存回累加器指令字节周期动作说明29.ANL direct,A 2 1 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址30.ANL direct,#data 3 2 将直接地址的内容与常数值做AND的逻辑判断,结果存回该直接地址31.ORL A,Rn 1 1 将累加器的值与寄存器的值做OR的逻辑判断,结果存回累加器32.ORL A,direct 2 1 将累加器的值与直接地址的内容做OR的逻辑判断,结果存回累加器33.ORL A,@Ri 1 1 将累加器的值与间接地址的内容做OR的逻辑判断,结果存回累加器34.ORL A,#data 2 1 将累加器的值与常数做OR的逻辑判断,结果存回累加器35.ORL direct,A 2 1 将直接地址的内容与累加器的值做OR的逻辑判断,结果存回该直接地址36.ORL direct,#data 3 2 将直接地址的内容与常数值做OR的逻辑判断,结果存回该直接地址37.XRL A,Rn 1 1 将累加器的值与Rn寄存器的值做XOR的逻辑判断,结果存回累加器38.XRL A,direct 2 1 将累加器的值与直接地址的内容做XOR的逻辑判断,结果存回累加器39.XRL A,@Ri 1 1 将累加器的值与间接地扯的内容做XOR的逻辑判断,结果存回累加器40.XRL A,#data 2 1 将累加器的值与常数作XOR的逻辑判断,结果存回累加器41.XRL direct,A 2 1 将直接地址的内容与累加器的值做XOR的逻辑判断,结果存回该直接地址42.XRL direct,#data 3 2 将直接地址的内容与常数的值做XOR的逻辑判断,结果存回该直接地址43.CLR A 1 1 清除累加器的值为044.CPL A 1 1 将累加器的值反相45.RL A 1 1 将累加器的值左移一位46.RLC A 1 1 将累加器含进位C左移一位47.RR A 1 1 将累加器的值右移一位48.RRC A 1 1 将累加器含进位C右移一位49.SW AP A 1 1 将累加器的高4位与低4位的内容交换。
(A)3-0←(A)7-4 数据转移指令50.MOV A,Rn 1 1 将寄存器的内容载入累加器51.MOV A,direct 2 1 将直接地址的内容载入累加器52.MOV A,@Ri 1 1 将间接地址的内容载入累加器53.MOV A,#data 2 1 将常数载入累加器54.MOV Rn,A 1 1 将累加器的内容载入寄存器55.MOV Rn,direct 2 2 将直接地址的内容载入寄存器56.MOV Rn,#data 2 1 将常数载入寄存器57.MOV direct,A 2 1 将累加器的内容存入直接地址指令字节周期动作说明58.MOV direct,Rn 2 2 将寄存器的内容存入直接地址59.MOV direct1, direct2 3 2 将直接地址2的内容存入直接地址160.MOV direct,@Ri 2 2 将间接地址的内容存入直接地址61.MOV direct,#data 3 2 将常数存入直接地址62.MOV @Ri,A 1 1 将累加器的内容存入某间接地址63.MOV @Ri,direct 2 2 将直接地址的内容存入某间接地址64.MOV @Ri,#data 2 1 将常数存入某间接地址65.MOV DPTR,#data16 3 2 将16位的常数存入数据指针寄存器66.MOVC A,@A+DPTR 1 2 (A) ←((A)+(DPTR))累加器的值再加数据指针寄存器的值为其所指定地址,将该地址的内容读入累加器67.MOVC A,@A+PC 1 2 (PC)←(PC)+1;(A)←((A)+(PC))累加器的值加程序计数器的值作为其所指定地址,将该地址的内容读入累加器68.MOVX A,@Ri 1 2 将间接地址所指定外部存储器的内容读入累加器(8位地址) 69.MOVX A,@DPTR 1 2 将数据指针所指定外部存储器的内容读入累加器(16位地址)70.MOVX @Ri,A 1 2 将累加器的内容写入间接地址所指定的外部存储器(8位地址)71.MOVX @DPTR,A 1 2 将累加器的内容写入数据指针所指定的外部存储器(16位地址)72.PUSH direct 2 2 将直接地址的内容压入堆栈区73.POP direct 2 2 从堆栈弹出该直接地址的内容74.XCH A,Rn 1 1 将累加器的内容与寄存器的内容互换75.XCH A,direct 2 1 将累加器的值与直接地址的内容互换76.XCH A,@Ri 1 1 将累加器的值与间接地址的内容互换77.XCHD A,@Ri 1 1 将累加器的低4位与间接地址的低4位互换布尔代数运算78.CLR C 1 1 清除进位C为079.CLR bit 2 1 清除直接地址的某位为080.SETB C 1 1 设定进位C为181.SETB bit 2 1 设定直接地址的某位为182.CPL C 1 1 将进位C的值反相83.CPL bit 2 1 将直接地址的某位值反相84.ANL C,bit 2 2 将进位C与直接地址的某位做AND的逻辑判断,结果存回进位C85.ANL C,/bit 2 2 将进位C与直接地址的某位的反相值做AND的逻辑判断,结果存回进位C86.ORL C,bit 2 2 将进位C与直接地址的某位做OR的逻辑判断,结果存回进位C87.ORL C,/bit 2 2 将进位C与直接地址的某位的反相值做OR的逻辑判断,结果存回进位C88.MOV C,bit 2 1 将直接地址的某位值存入进位C89.MOV bit,C 2 2 将进位C的值存入直接地址的某位90.JC rel 2 2 若进位C=1则跳至rel的相关地址91.JNC rel 2 2 若进位C=0则跳至rel的相关地址92.JB bit,rel 3 2 若直接地址的某位为1,则跳至rel的相关地址93.JNB bit,rel 3 2 若直接地址的某位为0,则跳至rel的相关地址指令字节周期动作说明94.JBC bit,rel 3 2 若直接地址的某位为1,则跳至rel的相关地址,并将该位值清除为0程序跳跃95.ACALL addr11 2 2 调用2K程序存储器范围内的子程序96.LCALL addr16 3 2 调用64K程序存储器范围内的子程序97.RET 1 2 从子程序返回98.RETI 1 2 从中断子程序返回99.AJMP addr11 2 2 绝对跳跃(2K内)100.LJMP addr16 3 2 长跳跃(64K内)101.SJMP rel 2 2 短跳跃(2K内)-128~+127字节102.JMP @A+DPTR 1 2 跳至累加器的内容加数据指针所指的相关地址103.JZ rel 2 2 累加器的内容为0,则跳至rel所指相关地址104.JNZ rel 2 2 累加器的内容不为0,则跳至rel所指相关地址105.CJNE A,direct,rel 3 2 将累加器的内容与直接地址的内容比较,不相等则跳至rel 所指的相关地址106.CJNE A,#data,rel 3 2 将累加器的内容与常数比较,若不相等则跳至rel所指的相关地址107.CJNE @Rn,#data,rel 3 2 将寄存器的内容与常数比较,若不相等则跳至rel所指的相关地址108.CJNE @Ri,#data,rel 3 2 将间接地址的内容与常数比较,若不相等则跳至rel所指的相关地址109.DJNZ Rn,rel 2 2 将寄存器的内容减1,不等于0则跳至rel所指的相关地址,等于0则顺序执行110.DJNZ direct,rel 3 2 将直接地址的内容减1,不等于0则跳至rel所指的相关地址111.NOP 1 1 无动作。