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 |