单片机:单芯片形态,集成了微型计算机的各种功能状态,面向嵌入式的计算机应用系统。
单片机中的寻址方式为7种方式,分别为:立即寻址,直接寻址,位寻址,寄存器寻址,寄存器间接寻址,变址寻址,相对寻址。
数据传送类指令:
条目 | 指令 | 字节 | 周期 | 描述 |
---|
1 | MOV A,Rn | 1 | 1 | 寄存器内容送入累加器 |
2 | MOV A,direct | 2 | 1 | 直接地址单元中的数据送入累加器 |
3 | MOV A,@Ri | 1 | 1 | 间接RAM 中的数据送入累加器 |
4 | MOV A,#tata | 2 | 1 | 立即数送入累加器 |
5 | MOV Rn,A | 1 | 1 | 累加器内容送入寄存器 |
6 | MOV Rn,direct | 2 | 2 | 直接地址单元中的数据送入寄存器 |
7 | MOV Rn,#data | 2 | 1 | 立即数送入寄存器 |
8 | MOV direct,A | 2 | 1 | 累加器内容送入直接地址单元 |
9 | MOV direct,Rn | 2 | 2 | 寄存器内容送入直接地址单元 |
10 | MOV direct,direct | 3 | 2 | 直接地址单元中的数据送入另一个直接地址单元 |
11 | MOV direct,@Ri | 2 | 2 | 间接RAM 中的数据送入直接地址单元 |
12 | MOV direct,#data | 3 | 2 | 立即数送入直接地址单元 |
13 | MOV @Ri,A | 1 | 1 | 累加器内容送间接RAM 单元 |
14 | MOV @Ri,direct | 2 | 2 | 直接地址单元数据送入间接RAM 单元 |
15 | MOV @RI,#data | 2 | 1 | 立即数送入间接RAM 单元 |
16 | MOV DRTR,#dat16 | 3 | 2 | 16位立即数送入地址寄存器 |
17 | MOVC A,@A+DPTR | 1 | 2 | 以DPTR为基地址变址寻址单元中的数据送入累加器 |
18 | MOVC A,@A+PC | 1 | 2 | 以PC为基地址变址寻址单元中的数据送入累加器 |
19 | MOVX A,@Ri | 1 | 2 | 外部RAM(8 位地址)送入累加器 |
20 | MOVX A,@DPTR | 1 | 2 | 外部RAM(16 位地址)送入累加器 |
21 | MOVX @Ri,A | 1 | 2 | 累计器送外部RAM(8 位地址) |
22 | MOVX @DPTR,A | 1 | 2 | 累计器送外部RAM(16 位地址) |
23 | PUSH direct | 2 | 2 | 直接地址单元中的数据压入堆栈 |
24 | POP direct | 2 | 2 | 弹栈送直接地址单元 |
25 | XCH A,Rn | 1 | 1 | 寄存器与累加器交换 |
26 | XCH A,direct | 2 | 1 | 直接地址单元与累加器交换 |
27 | XCH A,@Ri | 1 | 1 | 间接RAM与累加器交换 |
28 | XCHD A,@Ri | 1 | 1 | 间接RAM 的低半字节与累加器交换 |
算术运算类指令:
条目 | 指令 | 字节 | 周期 | 描述 |
---|
1 | ADD A,Rn | 1 | 1 | 寄存器内容加到累加器 |
2 | ADD A,direct | 2 | 1 | 直接地址单元的内容加到累加器 |
3 | ADD A,@Ri | 1 | 1 | 间接ROM 的内容加到累加器 |
4 | ADD A,#data | 2 | 1 | 立即数加到累加器 |
5 | ADDC A,Rn | 1 | 1 | 寄存器内容带进位加到累加器 |
6 | ADDC A,direct | 2 | 1 | 直接地址单元的内容带进位加到累加器 |
7 | ADDC A,@Ri | 1 | 1 | 间接ROM 的内容带进位加到累加器 |
8 | ADDC A,#data | 2 | 1 | 立即数带进位加到累加器 |
9 | SUBB A,Rn | 1 | 1 | 累加器带借位减寄存器内容 |
10 | SUBB A,direct | 2 | 1 | 累加器带借位减直接地址单元的内容 |
11 | SUBB A,@Ri | 1 | 1 | 累加器带借位减间接RAM 中的内容 |
12 | SUBB A,#data | 2 | 1 | 累加器带借位减立即数 |
13 | INC A | 1 | 1 | 累加器加1 |
14 | INC Rn | 1 | 1 | 寄存器加1 |
15 | INC direct | 2 | 1 | 直接地址单元加1 |
16 | INC @Ri | 1 | 1 | 间接RAM 单元加1 |
17 | DEC A | 1 | 1 | 累加器减1 |
18 | DEC Rn | 1 | 1 | 寄存器减1 |
19 | DEC direct | 2 | 1 | 直接地址单元减1 |
20 | DEC @Ri | 1 | 1 | 间接RAM单元减1 |
21 | INC DPTR | 1 | 1 | 地址寄存器DPTR加1 |
22 | MUL AB | 1 | 4 | A乘以B,结果放在A |
23 | DIV AB | 1 | 4 | A除以B,结果放在A |
24 | DA A | 1 | 1 | 累加器十进制调整 |
布尔变量操作类指令:
条目 | 指令 | 字节 | 周期 | 描述 |
---|
1 | CLR C | 1 | 1 | 清进位位 |
2 | CLR bit | 2 | 1 | 清直接地址位 |
3 | SETB C | 1 | 1 | 置进位位 |
4 | SETB bit | 2 | 1 | 置直接地址位 |
5 | CPL C | 1 | 1 | 进位位求反 |
6 | CPL bit | 2 | 1 | 置直接地址位求反 |
7 | ANL C,bit | 2 | 2 | 进位位和直接地址位相“与” |
8 | ANL C,bit | 2 | 2 | 进位位和直接地址位的反码相“与” |
9 | ORL C,bit | 2 | 2 | 进位位和直接地址位相“或” |
10 | ORL C,bit | 2 | 2 | 进位位和直接地址位的反码相“或” |
11 | MOV C,bit | 2 | 1 | 直接地址位送入进位位 |
12 | MOV bit,C | 2 | 2 | 进位位送入直接地址位 |
13 | JC rel | 2 | 2 | 进位位为1则转移 |
14 | JNC rel | 2 | 2 | 进位位为0则转移 |
15 | JB bit,rel | 3 | 2 | 直接地址位为1则转移 |
16 | JNB bit,rel | 3 | 2 | 直接地址位为0则转移 |
17 | JBC bit,rel | 3 | 2 | 直接地址位为1则转移,该位清零 |
逻辑操作数指令:
条目 | 指令 | 字节 | 周期 | 描述 |
---|
1 | ANL A,Rn | 1 | 1 | 累加器与寄存器相“与” |
2 | ANL A,direct | 2 | 1 | 累加器与直接地址单元相“与” |
3 | ANL A,@Ri | 1 | 1 | 累加器与间接RAM 单元相“与” |
4 | ANL A,#data | 2 | 1 | 累加器与立即数相“与” |
5 | ANL direct,A | 2 | 1 | 直接地址单元与累加器相“与” |
6 | ANL direct,#data | 3 | 2 | 直接地址单元与立即数相“与” |
7 | ORL A,Rn | 1 | 1 | 累加器与寄存器相“或” |
8 | ORL A,direct | 2 | 1 | 累加器与直接地址单元相“或” |
9 | ORL A,@Ri | 1 | 1 | 累加器与间接RAM 单元单元相“或” |
10 | ORL A,#data | 2 | 1 | 累加器与立即数相“或” |
11 | ORL direct,A | 2 | 1 | 直接地址单元与累加器相“或” |
12 | ORL direct,#data | 3 | 2 | 直接地址单元与立即数相“或” |
13 | XRL A,Rn | 1 | 1 | 累加器与寄存器相“异或” |
14 | XRL A,direct | 2 | 1 | 累加器与直接地址单元相“异或” |
15 | XRL A,@Ri | 1 | 1 | 累加器与间接RAM 单元单元相“异或” |
16 | XRL A,#data | 2 | 1 | 累加器与立即数相“异或” |
17 | XRL direct,A | 2 | 1 | 直接地址单元与累加器相“异或” |
18 | XRL direct,#data | 3 | 2 | 直接地址单元与立即数相“异或” |
19 | CLR A | 1 | 1 | 累加器清“0” |
20 | CPL A | 1 | 1 | 累加器求反 |
21 | RL A | 1 | 1 | 累加器循环左移 |
22 | RLC A | 1 | 1 | 累加器带进位位循环左移 |
23 | RR A | 1 | 1 | 累加器循环右移 |
24 | RRC A | 1 | 1 | 累加器带进位位循环右移 |
25 | SWAP A | 1 | 1 | 累加器半字节交换 |
控制转移类指令:
条目 | 指令 | 字节 | 周期 | 描述 |
---|
1 | ACALL addr11 | 2 | 2 | 绝对(短)调用子程序 |
2 | LCALL addr16 | 3 | 2 | 长调用子程序 |
3 | RET | 1 | 2 | 子程序返回 |
4 | RETI | 2 | 2 | 中数返回 |
5 | AJMP addr11 | 2 | 2 | 绝对(短)转移 |
6 | LJMP addr16 | 3 | 2 | 长转移 |
7 | SJMP rel | 2 | 2 | 相对转移 |
8 | JMP @A+DPTR | 1 | 2 | 相对于DPTR 的间接转移 |
9 | JZ rel | 2 | 2 | 累加器为零转移 |
10 | CJNE rel | 2 | 2 | 累加器非零转移 |
11 | CJNE A,direct,rel | 3 | 2 | 累加器与直接地址单元比较,不相等则转移 |
12 | CJNE A,#data,rel | 3 | 2 | 累加器与立即数比较,不相等则转移 |
13 | CJNE Rn,#data,rel | 3 | 2 | 寄存器与立即数比较,不相等则转移 |
14 | CJNE @Ri,#data,rel | 3 | 2 | 间接RAM 单元与立即数比较,不相等则转移 |
15 | DJNZ Rn,rel | 2 | 2 | 寄存器减1,非零转移 |
16 | DJNZ direct,erl | 3 | 2 | 直接地址单元减1,非零转移 |
17 | NOP | 1 | 1 | 空操作 |