51单片机的指令对照表
C51指令表

)→))C51汇编伪指令:1、DS ---预留存储区命令格式:〔标号:〕DS 表达式值其功能是从指定地址开始,定义一个存储区,以备源程序使用。
存储区预留的存储单元数由表达式的值决定。
TMP: DS 1从标号TEP地址处开始保留1个存储单元(字节)。
2、BIT---定义位命令格式:字符名称BIT 位地址其功能用于给字符名称定义位地址。
SPK BIT P3.7经定义后,允许在指令中用SPK代替P3.7。
3、USING指令USING指令通知汇编器使用8051的哪一个工作寄存器组。
格式:USING 表达式(值必须为0-3,默认值为0。
)USING 0使用第0组工作寄存器。
4、SEGMENT指令SEGMENT 指令用来声明一个再定位段和一个可选的再定位类型。
格式:再定位段名SEGMENT 段类型〔再定位类型〕其中,“再定位段名”用于指明所声明的段。
“段类型”用于指定所声明的段将处的存储器地址空间。
可用的段类型有CODE、XDA TA、DA TA、IDA TA和BIT。
STACK_SEG SEGMENT IDA TADA TA_SEG SEGMENT DATA5、RSEG---再定位段选择指令再定位段选择指令为RSEG,用于选择一个已在前面定义过的再定位段作为当前段。
格式:RSEG 段名段名必须是在前面已经声明过的再定位段。
DA TA_SEG SEGMENT DATA ;声明一个再定位DATA段RSEG DATA_SEG ;选择前面声明的再定位DA TA段作为当前段6、绝对段选择指令CSEG---绝对代码段DSEG---内部绝对数据段XSEG---外部绝对数据段ISEG---内部间接寻址数据段BSEG---绝对位寻址数据段格式:CSEG [AT 绝对地址表达式]DSEG [AT 绝对地址表达式]XSEG [AT 绝对地址表达式]ISEG [AT 绝对地址表达式]BSEG [AT 绝对地址表达式]括号内是可选项,用来指定当前绝对段的基地址。
51单片机汇编语言指令集

51汇编语言指令集符号定义表符号含义Rn R0~R7寄存器n=0~7Direct 直接地址,内部数据区的地址RAM(00H~7FH)SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0@Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数#data16 16位常数Addr16 16位的目标地址Addr11 11位的目标地址Rel 相关地址bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位指令介绍指令字节周期动作说明算数运算指令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单片机指令简表

算 术 运 算 类 指 令
算 术 运 算 类 指 令
04 08~0F 05 __ 06~07 A3 14 18~1F 16~17 15 __ A4 84 D4 58~5F 56~57 54 __ 55 __ 52 __ 53 __ __ 48~4F 46~47 44 __ 45 __ 42 __ 43 __ __ 68~6F 66~67 64 __ 65 __ 62 __ 63 __ __ 23 33 03 13 F4 E4 A2 __ 92 __ C3 C2 __ B3 B2 __ D3 D2 __ 82 __ B0 __
高四位 ↓ → 低四位 0 1 0 1 NOP JBC bit,rel AJMP0 ACALL0
(反汇编)
2 LJMP addr16 LCALL addr16 RET RETI ORL dir,A
3 RR A RRC A RL A RLC A ORL dir,#data ANL dir,#data XRL dir,#data
INC A INC Rn INC direct INC @Ri INC DPTR DEC A DEC Rn DEC @Ri DEC direct MUL AB DIV AB DA A ANL A, Rn ANL A, @Ri ANL A, #data ANL A, direct ANL direct, A ANL direct, #data ORL A, Rn ORL A,@Ri ORL A,#data ORL A,direct ORL direct, A ORL direct,#data XRL A, Rn XRL A,@Ri XRL A,#data XRL A,direct XRL direct, A XRL direct,#data RL A RLC A RR A RRC A CPL A CLR A MOV MOV CLR CLR CPL CPL SETB SETB ANL ANL C,bit bit,C C bit C bit C bit C,bit C,/ bit
MCS-51指令表

MCS-51指令系统所用的符号和含义
addr11 11位地址
addr16 16位地址
bit 位地址
rel 相对偏移量,为8位有符号数(补码形式)
direct 直接地址单元
#data 立即数
Rn 工作寄存器R0~R7
A 累加器
Ri i=0,1,R0或R1
X 片内RAM中的直接地址或寄存器
@ 表示间址寄存器的符号表示直接地址X中的内容;在间接寻址方式中,表示间址寄存器地址X指出的地址单元中的内容
→数据传送方向
∧逻辑与
∨逻辑或
⊕逻辑异或
√对标志产生影响
×不影响标志
算术运算指令
续上表
算术运算指令
逻辑运算指令
数据传送指令
续上表
位操作指令
续上表
控制转移指令。
关于51单片机程序汇编的指令周期表

C51汇编伪指令:1、DS ---预留存储区命令格式:〔标号:〕 DS 表达式值其功能是从指定地址开始,定义一个存储区,以备源程序使用。
存储区预留的存储单元数由表达式的值决定。
TMP: DS 1从标号TEP地址处开始保留1个存储单元(字节)。
2、BIT---定义位命令格式:字符名称BIT 位地址其功能用于给字符名称定义位地址。
SPK BIT P3.7经定义后,允许在指令中用SPK代替P3.7。
3、USING指令USING指令通知汇编器使用8051的哪一个工作寄存器组。
格式: USING 表达式(值必须为0-3,默认值为0。
)USING 0使用第0组工作寄存器。
4、SEGMENT指令SEGMENT 指令用来声明一个再定位段和一个可选的再定位类型。
格式:再定位段名 SEGMENT 段类型〔再定位类型〕其中,“再定位段名”用于指明所声明的段。
“段类型”用于指定所声明的段将处的存储器地址空间。
可用的段类型有 CODE、XDATA、DATA、IDATA和BIT。
STACK_SEG SEGMENT IDATADATA_SEG SEGMENT DATA5、RSEG---再定位段选择指令再定位段选择指令为RSEG,用于选择一个已在前面定义过的再定位段作为当前段。
格式: RSEG 段名段名必须是在前面已经声明过的再定位段。
DATA_SEG SEGMENT DATA ;声明一个再定位DATA段RSEG DATA_SEG ;选择前面声明的再定位DATA段作为当前段6、绝对段选择指令CSEG---绝对代码段DSEG---内部绝对数据段XSEG---外部绝对数据段ISEG---内部间接寻址数据段BSEG---绝对位寻址数据段格式:CSEG [AT 绝对地址表达式]DSEG [AT 绝对地址表达式]XSEG [AT 绝对地址表达式]ISEG [AT 绝对地址表达式]BSEG [AT 绝对地址表达式]括号内是可选项,用来指定当前绝对段的基地址。
常见51单片机指令及详解

常见51单片机指令及详解数据传递类指令(1)以累加器为目的操作数的指令MOV A,RnMOV A,directMOV A,@RiMOV A,#data第一条指令中,Rn代表的是R0-R7。
第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。
第四条指令是将立即数data送到A中。
下面我们通过一些例子加以说明:MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。
MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。
MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。
如执行命令前R1中的值为20H,则是将20H单元中的值送入A中。
MOV A,#34H ;将立即数34H送入A中,执行完本条指令后,A中的值是34H。
(2)以寄存器Rn为目的操作的指令MOV Rn,AMOV Rn,directMOV Rn,#data这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。
(3)以直接地址为目的操作数的指令MOV direct,A 例: MOV 20H,AMOV direct,Rn MOV 20H,R1MOV direct1,direct2 MOV 20H,30HMOV direct,@Ri MOV 20H,@R1MOV direct,#data MOV 20H,#34H(4)以间接地址为目的操作数的指令MOV @Ri,A 例:MOV @R0,AMOV @Ri,direct MOV @R1,20HMOV @Ri,#data MOV @R0,#34H(5)十六位数的传递指令MOV DPTR,#data168051是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入DPTR中去。
其中高8位送入DPH,低8位送入DPL。
例:MOV DPTR,#1234H,则执行完了之后DPH中的值为12H,DPL中的值为34H。
MCS-51单片机的指令

MCS-51单⽚机的指令MCS-51单⽚机的指令⼀.数据传送类指令(29条).1 通⽤传送指令(16条)格式:MOV ⽬的操作数,源操作数功能:把第⼆操作数指定的字节内容传送到第⼀操作数指定的单元中。
不影响源操作数内容,不影响别的寄存器和标志。
根据⽬的操作数的不同,通⽤传送指令⼜分为以下⼏种类型:1.1 以累加器A为⽬的操作数的传送类指令(4条)指令助记符及功能说明如下:⽬的操作数源操作数功能说明源操作数寻址⽅式MO V A, direct ;(A)←(direct)直接寻址MO V A, @Ri ;(A)←((Ri))寄存器间接寻址MO V A, Rn ;(A)←(Rn)寄存器寻址MO A, #data ;(A)←data ⽴即寻址V这类指令的功能是将源操作数送到⽬的操作数A中。
指令执⾏后的结果:除了奇偶标志P始终跟踪A中数据的奇偶性外,不影响PSW中的其他标志位。
1.2 以Rn为⽬的操作数的传送类指令(3条)指令助记符及功能说明如下:⽬的操作数源操作数功能说明源操作数寻址⽅式MOVRn, A ;(Rn)←(A) 寄存器寻址MO V Rn, direct ;(Rn)←(direct)其中,Rn是R0,…,R7中的任意⼀个。
例1 若(A)=20H,则执⾏指令MOV R3, A后,(R3)=20H。
注意:Rn寄存器之间不能直接传送数据。
如指令“MOV R1, R7”是错误的。
该类指令执⾏后,不影响PSW中的标志位。
1.3. 以直接地址directX为⽬的操作数的传送类指令(5条)指令助记符及功能说明如下:⽬的操作数源操作数功能说明源操作数寻址⽅式M OV directX, A ;(directX)←(A)寄存器寻址M directX, Rn ;(directX)←寄存器寻址OV (Rn)M OV directX, directY ;(directX)←(directY)直接寻址M OV directX, @Ri ;(directX)←((Ri))寄存器间接寻址M OV directX, #data ;(directX)←data⽴即寻址这类指令的功能是把源操作数的内容送到直接地址directX中去。
单片机MC51指令表

MCS-51单片机操作数共有5种操作数1、立即数( 常数) #data 例 #20、#14H 、#00010100B2、寄存器 R0~R7、 A 、 B 、 DPTR 等3、存储器4、位操作数5、相对转移地址 relMCS-51单片机操作数1、立即数(常数)操作数 #data例 #20、#14H 、#00010100B例:1)、 MOV A , #14H2)、 MOV R0, #20称为立即数寻址方式2、寄存器操作数 R0~R7、 A 、 B 、 DPTR(1)4组通用工作寄存区共32个工作寄存器。
(2)部分特殊功能寄存器,例如A 、B 以及数据指针寄存器DPTR 等。
例: 1)、 MOV A , R12)、 MOV R5, #00010100B3)MOV DPTR, #1000H称为寄存器寻址方式3、存储器操作数 片内RAM 器 片外RAM ROM片内RAM 器片外RAMROM1)、片内RAM表示方法a、直接地址表示00H~7FH、80H~FFH中21个SFR例MOV A , 30HMOV A , P1 或MOV A , 90H称为直接寻址方式b、寄存器间接地址表示为@R0 、@R1例MOV A , @R1 (假设R1=0030H)称为寄存器间接寻址方式2)、片外RAM表示方法(只能寄存器间接表示)a、8位寄存器间接地址表示为@R0、@R1例MOVX A , @R0 (假设R0=0040H)b、16位寄存器间接地址表示为@DPTR例MOVX A , @DPTR (假设DPTR=1020H) 称为寄存器间接寻址方式3)、ROM表示方法(只能寄存器间接表示)@A+PC、@A+DPTRCPU对ROM的访问用MOVC指令格式1:MOVC A , @A+DPTR格式2:MOVC A , @A+PC格式2: JMP @A+DPTR其中@A+DPTR 与@A+PC表示ROM中某个单元称为基址寄存器加变址寄存器寻址方式4 位操作数位操作数为片内RAM的位寻址区20H~2FH( 位地址00~7FH)及特殊功能寄存器中的可寻址位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
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
4
DA
A
累加器十进制调整
1
1
ADD
A,Rn
寄存器与累加器求和
1
1
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
清进位位
1
1
CLR
bit
清直接寻址位
2
1
SETB
直接地址传送到寄存器
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
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
#data8
8位常数
#data16
16位常数
addr16
16位目标地址,能转移或调用到64KROM的任何地方
addr11
11位目标地址,在下条指令的2K范围内转移或调用
Rel
8位偏移量,用于SJMP和所有条件转移指令,范围-128~+127
Bit
片内RAM中的可寻址位和SFR的可寻址位
Direct
直接地址,范围片内RAM单元(00H-7FH)和80H-FFH
$
指本条指令的起始位置
立即数与累加器求和(带进位)
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
直接地址弹出堆栈
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
立即数传送到直接地址
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
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
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
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
2
ORL
A,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
指明程序的开始位置
DB
定义数据表
DW
定义16位的地址表
EQU
给一个表达式或一个字符串起名
DATA
给一个8位的内部RAM起名
XDATA
给一个8位的外部RAM起名
BIT
给一个可位寻址的位单元起名
END
指出源程序到此为止
(指令中的符号标识)
Rn
工作寄存器R0-R7
Ri
工作寄存器R0和R1
@Ri
间接寻址的8位RAM单元地址(00H-FFH)
51单片机指令对照表
助记符
指令说明
字节数
周期数
(数据传递类指令)
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
比较立即数和累加器,不相等转移