LOADING

加载过慢请开启缓存 浏览器默认开启

MCS-51指令总表

2022/8/22 单片机

Abstract: 用来记录MCS-51的指令的文章,全文纯手打的,以后可能会更新(改错


目录:


数据传送指令

助记符 功能说明 字节数 振荡器周期
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
MOVX A, @Ri 外部RAM(8位地址)传送到累加器 1 24
MOVX A, @DPTR 外部RAM(16位地址)传送到累加器 1 24
MOVX @Ri, A 累加器传送到外部RAM(8位地址) 1 24
MOVX @DPTR, A 累加器传送到外部RAM(16位地址) 1 24
MOVC A, @A+DPTR 程序储存器字节传送到累加器 1 24
MOVC A, @A+PC 程序存储器字节传送到累加器 1 24
SWAP A 累加器内半字节交换 1 12
XCHD A, @Ri 间接寻址RAM和累加器低半字节交换 1 12
XCH A, Rn 寄存器和累加器交换 1 12
XCH A, direct 直接寻址字节和累加器交换 2 12
XCH A, @Ri 间接寻址RAM和累加器交换 1 12
PUSH direct 直接寻址字节压入栈顶 2 24
POP direct 栈顶弹到直接寻址字节 2 24

算数运算类指令

助记符 功能说明 字节数 振荡器周期
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 累加器内容减去寄存器内容(带借位) 1 12
SUBB A, direct 累加器内容减去直接寻址字节(带借位) 2 12
SUBB A, @Ri 累加器内容减去间接寻址RAM(带借位) 1 12
SUBB A, #data 累加器减去立即数(带借位) 2 12
DA A 累加器十进制调整 1 12
INC A 累加器加一 2 12
INC Rn 寄存器加一 1 12
INC direct 直接寻址字节加一 2 12
INC @Ri 间接寻址RAM加一 1 12
INC DPTR 数据指针寄存器加一 1 12
DEC A 累加器减一 1 12
DEC Rn 寄存器加一 1 12
DEC direct 直接寻址地址字节减一 2 12
DEC @Ri 间接寻址RAM减一 1 12
MUL AB 累加器A和寄存器B相乘 1 12
DIV AB 累加器A除以寄存器B 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 12
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 12
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 12
RL A 累加器循环左移 1 12
RLC A 经过进位位的累加器循环左移 1 12
RR A 累加器循环右移 1 12
RRC A 经过进位位的累加器循环右移 1 12
CLR A 累加器清零 1 12
CPL A 累加器求反 1 12

控制转移类指令

助记符 功能说明 字节数 振荡器周期
LJMP addr16 长转移 3 24
AJMP addr11 绝对转移 2 24
SJMP rel 短转移(相对偏移) 2 24
JMP @A+DPTR 相对DPTR的间接转移 1 24
JZ rel 累加器为零则转移 2 24
JNZ rel 累加器为非零则转移 2 24
CJNE A, direct, rel 比较直接寻址字节和A不相等则转移 3 24
CJNE A, #data, rel 比较立即数和A不相等则转移 3 24
CJNE Rn, #data, rel 比较立即数和寄存器不相等则转移 3 24
CJNZ @Ri, #data, rel 比较立即数和间接寻址RAM不相等则转移 3 24
DJNZ Rn, rel 寄存器减一不为零则转移 2 24
DJNZ direct, rel 直接寻址字节减一不为零则转移 3 24
ACALL addr11 绝对调用子程序 2 24
LCALL addr16 长调用子程序 3 24
RET 从子程序返回 1 24
RETI 从中断返回 1 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 12
MOV bit, C 进位位送入直接地址位 2 24
JC rel 进位位为一则转移 2 24
JNC rel 进位位为零则转移 2 24
JB bit, rel 直接地址位为一则转移 3 24
JNB bit, rel 直接地址位为零则转移 3 24
JBC bit, rel 直接地址位为一则转移,该位清零 3 24