西南交通大学计算机学院 蒋朝根 整理 (V1.00) Tel:028-86467628 jdc51@126.com QQ:28707532
0506 室提供:ISP 下载线,KEIL C51 仿真器,AVR JTAG 仿真器,单片机实验板、ARM 实验板、DSP 实
验板等。 对外承接单片机、ARM、DSP 等各类项目。
MCS51 指令集
一. 数据传送类
助 记 符 说 明 字节数 周期
MOV A,Rn 寄存器传送到累加器 1 12
MOV A,direct 直接字节传送到累加器 2 12
MOV A,@Ri 间接 RAM 传送到累加器 1 12
MOV A,#data 立即数传送到累加器 2 12
MOV Rn,A 累加器传送到寄存器 1 12
MOV Rn,direct 直接字节传送到寄存器 2 24
MOV Rn,#data 立即数传送到寄存器 2 12
MOV direct,A 累加器传送到直接字节 2 12
MOV direct,Rn 寄存器传送到直接字节 2 24
MOV direct,direct 直接字节传送到直接字节 3 24
MOV direct,@Ri 间接 RAM 传送到直接字节 2 24
MOV direct,#data 立即数传送到直接字节 3 24
MOV @Ri,A 累加器传送到间接 RAM 1 12
MOV @Ri,direct 直接字节传送到间接 RAM 2 24
MOV @Ri,#data 立即数传送到间接 RAM 2 12
MOV DPTR,#data16 16 位常数传送到数据指针 3 24
MOVC A,@A+DPTR 代码字节传送到累加器 1 24
MOVC A,@A+PC 代码字节传送到累加器 1 24
MOVX A,@Ri 外部 RAM(8 位地址)传送到 ACC 1 24
MOVX A,@DPTR 外部 RAM(16 位地址)传送到 ACC 1 24
MOVX @Ri,A ACC 传送到外部 RAM(8 位地址) 1 24
MOVX @DPTR,A ACC 传送到外部 RAM(16 位地址) 1 24
PUSH direct 直接字节压到堆栈 2 24
POP direct 从栈中弹到直接字节 2 24
XCH A,Rn 寄存器和累加器交换 1 12
XCH A,direct 直接字节和累加器交换 2 12
XCH A,@Ri 间接 RAM 和累加器交换 1 12
XCHD A,@Ri 间接 RAM 和累加器交换低 4位 1 12
二. 算术操作类
助 记 符 说 明 字节数 周期
ADD A,Rn 寄存器加到累加器 1 12
ADD A,direct 直接字节加到累加器 2 12
ADD A,@Ri 间接 RAM 加到累加器 1 12
ADD A,#data 立即数加到累加器 2 12
ADDC A,Rn 寄存器加到累加器(带进位) 1 12
ADDC A,direct 直接字节加到累加器(带进位) 2 12
ADDC A,@Ri 间接 RAM 加到累加器(带进位) 1 12
ADDC A,#data 立即数加到累加器(带进位) 2 12
SUBB A,Rn ACC 减去寄存器(带进位) 1 12
SUBB A,direct ACC 减去直接字节(带进位) 2 12
SUBB A,@Ri ACC 减去间接 RAM(带进位) 1 12
SUBB A,#data ACC 减去立即数(带进位) 2 12
INC A 累加器加一 1 12
INC Rn 寄存器加一 1 12
INC direct 直接字节加一 2 12
INC @Ri 间接 RAM 加一 1 12
DEC A 累加器减一 1 12
DEC Rn 寄存器减一 1 12
DEC direct 直接字节减一 2 12
DEC @Ri 间接 RAM 减一 1 12
INC DPTR 数据指针加一 1 24
MUL AB A和 B 的寄存器相乘 1 48
DIV AB A寄存器除以 B 寄存器 1 48
DA A 累加器十进制调整 1 12
三. 逻辑操作类
助 记 符 说 明 字节数 周期
ANL A,Rn 寄存器"与"到累加器 1 12
ANL A,direct 直接字节"与"到累加器 2 12
ANL A,@Ri 间接 RAM"与"到累加器 1 12
ANL A,#data 立即数"与"到累加器 2 12
ANL direct,A 累加器"与"到直接字节 2 12
ANL direct,#data 立即数"与"到直接字节 3 24
ORL A,Rn 寄存器"或"到累加器 1 12
ORL A,direct 直接字节"或"到累加器 2 12
ORL A,@Ri 间接 RAM"或"到累加器 1 12
ORL A,#data 立即数"或"到累加器 2 12
ORL direct,A 累加器"或"到直接字节 2 12
ORL direct,#data 立即数"或"到直接字节 3 24
XRL A,Rn 寄存器异或到累加器 1 12
XRL A,direct 直接字节异或到累加器 2 12
XRL A,@Ri 间接 RAM 异或到累加器 1 12
XRL A,#data 立即字节异或到累加器 2 12
XRL direct,A 累加器异或到直接字节 2 12
XRL direct,#data 立即数异或到直接字节 3 24
CLR A 累加器清零 1 12
CPL A 累加器取反 1 12
RL A 累加器循环左移 1 12
RLC A 经过进位位的累加器循环左移 1 12
RR A 累加器循环右移 1 12
RRC A 经过进位位的累加器循环右移 1 12
SWAP A 累加器内部高、低四位交换 1 12
四. 控制转移类
助 记 符 说 明 字节数 周期
ACALL addr11 页内调用子程序 2 24
LCALL addr16 长调用子程序 3 24
RET 从子程序返回 1 24
RETI 从中断返回 1 24
AJMP addr11 页内转移 2 24
LJMP addr16 长转移 3 24
SJMP rel 相对转移 2 24
JMP @A+DPTR 相对 DPTR 的间接转移 1 24
JZ rel 累加器为零则转移 2 24
JNZ rel 累加器非零则转移 2 24
CJNE A,direct,rel 比较直接字节和 ACC,不相等则转移 3 24
CJNE A,#data,rel 比较立即数和 ACC,不相等则转移 3 24
CJNE Rn,#data,rel 比较立即数和寄存器不相等则转移 3 24
CJNE @Ri,#data,rel 比较立即数和间接 RAM 不相等则转移 3 24
DJNZ Rn,rel 寄存器减一,不为零则转移 2 24
DJNZ direct,rel 直接字节减一,不为零则转移 3 24
NOP 空操作 1 12
五. 布尔变量操作类
助 记 符 说 明 字节数 周期
CLR C 清进位 1 12
CLR bit 清直接寻址位 2 12
SETB C 置进位 1 12
SETB bit 置直接寻址位 2 12
CPL C 进位取反 1 12
CPL bit 直接寻址位取反 2 12
ANL C,bit 直接寻址位"与"到进位位 2 24
ANL C,/bit 直接寻址位的反"与"到进位位 2 24
ORL C,bit 直接寻址位"或"到进位位 2 24
ORL C,/bit 直接寻址位的反"或"到进位位 2 24
MOV C,bit 直接寻址位传送到进位位 2 24
MOV bit,C 进位位传送到直接寻址位 2 24
JNC rel 如果进位位为零则转移 2 24
JC rel 如果进位位为一则转移 2 24
JB bit,rel 直接寻址位为一则转移 3 24
JNB bit,rel 直接寻址位为零则转移 3 24
JBC bit,rel 直接寻址位为一则转移并 3 24
清除该位
1
六. 影响标志位的指令
指 令 标 志 指 令 标 志
C OV AC C OV AC
ADD X X X CLR C 0
ADDC X X X CPL C X
SUBB X X X ANL C,bit X
MUL 0 X ANL C,/bit X
DIV 0 X ORL C,bit X
DA X ORL C,/bit X
RRC X MOV C,bit X
RLC X CJNE X
SETB C 1
七. 程序状态字 PSW
D7 D6 D5 D4 D3 D2 D1 D0
CY AC F0 RS1 RS0 OV - P
如有错误,请告诉我。