MCS51单片机的指令系统
- 格式:ppt
- 大小:798.50 KB
- 文档页数:100
MCS51单片机指令系统与汇编语言程序设计MCS-51是一种非常常见的8位单片机系列,该系列包括了多种型号的单片机,如Intel 8051、8031、8052等。
MCS-51单片机指令系统是一组用于驱动该系列单片机的指令集,汇编语言程序设计是利用这些指令来编写程序。
MCS-51单片机指令系统包含了多种指令,可以执行诸如数据传输、算术逻辑运算、控制和数据访问等功能。
这些指令通过各种不同的寻址模式来操作数据,包括立即寻址、寄存器寻址、直接寻址、间接寻址和寄存器间接寻址等。
不同的寻址模式和指令组合可以实现不同的功能。
汇编语言程序设计通过将人类可读的汇编指令翻译成机器可执行的二进制指令来编写程序。
在MCS-51单片机中,汇编指令由操作码和操作数组成。
操作码指定了所执行的操作,如数据传输、算术运算或控制指令。
操作数则指定了指令要操作的数据。
下面以一个简单的例子来说明MCS-51单片机指令系统和汇编语言程序设计的基本原理。
假设我们要编写一个程序,将两个寄存器中的数据相加,并将结果存储到第三个寄存器中。
首先,我们需要将第一个寄存器的值加载到累加器A中,这可以通过MOV指令实现。
MOV指令的操作码为01,操作数为两个寄存器的地址。
例如,MOVA,R0将R0的值加载到A中。
接下来,我们需要将第二个寄存器的值加载到B寄存器中,同样可以使用MOV指令。
MOVB,R1将R1的值加载到B中。
然后,我们可以使用ADD指令将A和B中的值相加,并将结果存储到A中。
ADD指令的操作码为04,操作数为A的地址。
例如,ADDA将累加器中的值与A寄存器中的值相加,并将结果存储到A中。
最后,我们可以使用MOV指令将A中的结果移动到第三个寄存器中,例如,MOVR2,A将A的值移动到R2中。
通过组合使用这些指令,我们可以实现将两个寄存器中的值相加并存储到第三个寄存器中的功能。
总结来说,MCS-51单片机指令系统和汇编语言程序设计是一种用于编程控制该系列单片机的方式。
第3章MCS-51单片机指令系统3.1概述3.1.1指令格式3.1.2指令的三种表示形式3.1.3指令的字节数1. 单字节指令(49条)图3-1 MOVA,Rn指令的格式2单片机原理及其接口技术(第2版)2. 双字节指令(46条)3. 三字节指令(16条)3.1.4指令的分类1. 数据传送指令(28条)2. 算术运算指令(24条)3. 逻辑操作和环移指令(25条)4. 控制转移指令(17条)5. 位操作指令(17条)3.1.5指令系统综述1. 指令系统中所用符号的说明2. 指令对标志位的影响3.2寻址方式3.2.1寄存器寻址图3-2寄存器寻址示意图单片机原理及其接口技术(第2版) 3 3.2.2直接寻址图3-3直接寻址示意图3.2.3立即寻址3.2.4寄存器间址图3-4寄存器间址寻址示意图3.2.5变址寻址图3-5变址寻址示意图4单片机原理及其接口技术(第2版)3.2.6相对寻址图3-6相对寻址示意图3.2.7位寻址3.3数据传送指令3.3.1内部数据传送指令(15条)1. 立即寻址型传送指令2. 直接寻址型传送指令3. 寄存器寻址型传送指令4. 寄存器间址型传送指令5. 内部数据传送指令的使用图3-7 8×C552/8051指令的数据传送方式单片机原理及其接口技术(第2版) 5 3.3.2外部数据传送指令(7条)1. 16位数传送指令2. 外部ROM的字节传送指令图3-8 0~9平方值表3. 外部RAM的字节传送指令3.3.3堆栈操作指令(2条)图3-9例3.8的堆栈变化示意图6单片机原理及其接口技术(第2版)3.3.4数据交换指令(4条)3.4算术与逻辑运算和移位指令3.4.1算术运算指令(24条)1. 加法指令2. 减法指令3. 十进制调整指令4. 乘法和除法指令3.4.2逻辑运算指令(20条)1. 逻辑与运算指令2. 逻辑或指令3. 逻辑异或指令4. 累加器清零和取反指令3.4.3移位指令(5条)单片机原理及其接口技术(第2版)7图3-10例3.26附图3.5控制转移和位操作指令3.5.1控制转移指令(17条)1. 无条件转移指令图3-11 AJMP指令转移范围8单片机原理及其接口技术(第2版)图3-12例3.29附图图3-13带符号数的比较方法3. 子程序调用和返回指令图3-14二级子程序嵌套及断点地址存放单片机原理及其接口技术(第2版)9图3-15例3.33附图10单片机原理及其接口技术(第2版)4. 空操作指令3.5.2位操作指令(17条)1. 位传送指令2. 位置位和位清零指令3. 位运算指令4. 位控制转移指令习题与思考题3.1指令通常有哪三种表示形式?各有什么特点?3. 2 MCS-51指令按功能可以分为哪几类?每类指令的作用是什么?3. 3 MCS-51共有哪七种寻址方式?各有什么特点?3. 4指出下列每条指令源操作数的寻址方式和功能。
MCS-51单片机的指令集。
MCS-51系列单片机的指令系统,按功能分类可分为:数据传送、算术操作、逻辑操作、控制转移和布尔变量操作等五种。
1.数据传送类指令:助记符功能说明字节数振荡周期MOV A,Rn寄存器内容送入累加器112 MOV A,direct直接地址单元中的数据送入累加器212 MOV A,@Ri间接RAM中的数据送入累加器112 MOV A,#data88位立即数送入累加器212 MOV Rn,A累加器内容送入寄存器112 MOV Rn,direct直接地址单元中的数据送入寄存器224 MOV Rn,#data88位立即数送入寄存器212 MOV direct,A累加器内容送入直接地址单元212 MOV direct,Rn寄存器内容送入直接地址单元224 MOV direct,direct直接地址单元中的数据送入直接地址单元324 MOV direct,@Ri间接RAM中的数据送入直接地址单元224 MOV direct,#data88位立即数送入直接地址单元324 MOV @Ri,A累加器内容送入间接RAM单元112 MOV @Ri,direct直接地址单元中的数据送入间接RAM单元224 MOV @Ri,#data88位立即数送入间接RAM单元212 MOV DPTR,#data1616位立即数地址送入地址寄存器324MOV A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器124MOV A,@A+PC 以PC为基地址变址寻址单元中的数据送入累加器124MOV A,@Ri外部RAM(8位地址)送入累加器124 MOV A,@DPTR外部RAM(16位地址)送入累加器124 MOV @Ri,A累加器送入外部RAM(8位地址)124 MOV @DPTR,A累加器送入外部RAM(16位地址)124 PUSH direct直接地址单元中的数据压入堆栈224 POP DIRECT堆栈中的数据弹出到直接地址单元224 XCH A,Rn寄存器与累加器交换112 XCH A,direct直接地址单元与累加器交换212 XCH A,@Ri间接RAM与累加器交换112 XCHD A,@Ri间接RAM与累加器进行低半字节交换1122.算术操作类指令:助记符功能说明字节数振荡周期ADD A,Rn寄存器内容加到累加器112 ADD A,direct直接地址单元加到累加器212 ADD A,@Ri间接RAM内容加到累加器112 ADD A,#data88位立即数加到累加器212 ADDC A,Rn寄存器内容带进位加到累加器112 ADDC A,dirct直接地址单元带进位加到累加器212 ADDC A,@Ri间接RAM内容带进位加到累加器112 ADDC A,#data88位立即数带进位加到累加器212 SUBB A,Rn累加器带借位减寄存器内容112 SUBB A,dirct累加器带借位减直接地址单元212 SUBB A,@Ri累加器带借位减间接RAM内容112 SUBB A,#data8累加器带借位减8位立即数212 INC A累加器加1112 INC Rn寄存器加1112 INC direct直接地址单元内容加1212 INC @Ri间接RAM内容加1112 INC DPTR DPTR加1124 DEC A累加器减1112 DEC Rn寄存器减1112 DEC direct直接地址单元内容减1212 DEC @Ri间接RAM内容减1112 MUL A,B A乘以B148 DIV A,B A除以B148 DA A累加器进行十进制转换1123.逻辑操作类指令:助记符功能说明字节数振荡周期ANL A,Rn累加器与寄存器相“与”112 ANL A,direct累加器与直接地址单元相“与”212 ANL A,@Ri累加器与间接RAM内容相“与”112 ANL A,#data8累加器与8位立即数相“与”212 ANL direct,A直接地址单元与累加器相“与”212 ANL direct,#data8直接地址单元与8位立即数相“与”324ORL A,Rn累加器与寄存器相“或”112 ORL A,direct累加器与直接地址单元相“或”212 ORL A,@Ri累加器与间接RAM内容相“或”112 ORL A,#data8累加器与8位立即数相“或”212 ORL direct,A直接地址单元与累加器相“或”212 ORL direct,#data8直接地址单元与8位立即数相“或”324 XRL A,Rn累加器与寄存器相“异或”112 XRL A,direct累加器与直接地址单元相“异或”212 XRL A,@Ri累加器与间接RAM内容相“异或”112 XRL A,#data8累加器与8位立即数相“异或”212 XRL direct,A直接地址单元与累加器相“异或”212 XRL direct,#data8直接地址单元与8位立即数相“异或”324 CLR A累加器清0112 CPL A累加器求反112 RL A累加器循环左移112 RLC A累加器带进位循环左移112 RR A累加器循环右移112 RRC A累加器带进位循环右移112 SWAP A累加器半字节交换1124.控制转移类指令:(返回)助记符功能说明字节数振荡周期ACALL addr11绝对短调用子程序224 LACLL addr16长调用子程序324 RET子程序返回124 RETI中断返回124 AJMP addr11绝对短转移224 LJMP addr16长转移324 SJMP rel相对转移224 JMP @A+DPTR相对于DPTR的间接转移124JZ rel累加器为零转移224 JNZ rel累加器非零转移224 CJNE A,direct,rel累加器与直接地址单元比较,不等则转移324 CJNE A,#data8,rel累加器与8位立即数比较,不等则转移324 CJNE Rn,#data8,rel寄存器与8位立即数比较,不等则转移324 CJNE @Ri,#data8,rel间接RAM单元,不等则转移324 DJNZ Rn,rel寄存器减1,非零转移324 DJNZ direct,rel直接地址单元减1,非零转移324 NOP空操作1125.布尔变量操作类指令:助记符功能说明字节数振荡周期CLR C清进位位112 CLR bit清直接地址位212 SETB C置进位位112 SETB bit置直接地址位212 CPL C进位位求反112 CPL bit直接地址位求反212 ANL C,bit进位位和直接地址位相“与”224 ANL C,bit进位位和直接地址位的反码相“与”224 ORL C,bit进位位和直接地址位相“或”224 ORL C,bit进位位和直接地址位的反码相“或”224 MOV C,bit直接地址位送入进位位212 MOV bit,C进位位送入直接地址位224 JC rel进位位为1则转移224 JNC rel进位位为0则转移224 JB bit,rel直接地址位为1则转移324 JNB bit,rel直接地址位为0则转移324 JBC bit,rel直接地址位为1则转移,该位清零324。