MCS-51单片机指令系统教程.ppt
《MCS-51单片机指令系统教程.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机指令系统教程.ppt(120页珍藏版)》请在三一文库上搜索。
1、MCS-51单片机指令系统,2.1 概述,2.2 寻址方式,2.3 数据传送指令,2.4 算逻运算和移位指令,2.5 控制转移和位操作指令,2.1:MCS-51指令系统的概述,MCS-51共有111条指令,指令的长度和执行时间因不同的指令而各不相同。 2.1.1 指令格式 2.1.2 指令的三种表示形式 2.1.3 指令的字节数 2.1.4 指令的分类,继续,2.1.1 指令格式:,指令格式:既指令的结构形式。,操作码,操作数或操作数地址,由操作码和操作数(或操作数地址)构成指令的结构。,举例:MOV A,#0FFH ADD A,R0,返回,指令的表示形式是识别指令的标志。 1,二进制的表示形
2、式:(以“累加器的内容+08H”为例) 00100100B 操作码 OP (加法) 00001000B 操作数DATA(08H) 特点: 能被CPU直接识别、运行的形式。也称机器码、汇编语 言的目标代码。 缺点:不便于阅读、记忆和调试修改。,2.1.2 指令的三种表示形式:,2,十六进制表示方式: 它是对二进制形式的一种简化。 00100100B 24H 00001000B 08H 在实验室等少数环境下,可以将这种形式作为输入程序的一种辅助手段。但是,这种形式的指令格式必须由对应的监控程序把它们翻译成二进制的“机器码”后存入程序存储器并运行。,二进制表示的形式 十六进制表示的形式,3,指令的“
3、助记符”方式(也称“汇编格式”): 00100100B 24H 00001000B 08H ADD A,#08H 1,这是一种由英文单词或字母、数字来表征指令功能的 形式。是一种便于阅读、书写和交流的表示形式。 2,这种 “汇编”格式的指令必须把它“翻译”为二进制形式 “机器码”后才能为CPU所识别和执行。 3,三种不同的表示方法适用于不同的场合。 本章内容都以汇编的形式介绍指令系统。,二进制表示形式 十六进制表示 汇编格式,返回,2.1.3 指令的字节数,在MCS-51单片机的指令系统中,因指令操作码和操作数的不同,指令(在存储器中)长度也各不相同。 分为单字节、双字节和三字节。 单字节指令
4、(49条):分无操作数、有操作数两种。 无操作数:如 INC DPTR 10100011B INC A 00000100B 【特点】:操作数隐含在操作码中。 含有操作数寄存器名称的单字节指令: 如:MOV A,R0 11101000B MOV A,R1 11101001B 【特点】:寄存器名以三位数代码的形式在指令的后三位。,双字节指令(46条): 指令的操作码和操作数各占一个字节。 如: MOV A,#data 01110100B data 很明显:8位的操作数本身占据一个字节。,n,n+1,mov a,#data,双字节指令在程序存储器的存放示意图,三字节指令(16条): 指令中的操作数为
5、双字节。如: MOV DPTR,#data16 1001000B,data15-8,data7-0 或者:指令中分别包含1个字节的操作数和1个字节的操作数地址。如: MOV direct,#data 举例:MOV 20H,#0FFH,MOV dptr,#data16,MOV direct,#data,三字节指令在存储器中存放的方式示意图,指令的字节数与指令的运行时间,指令的字节多是否意味着指令周期就长?,从表中可见,指令的字节数与指令周期不是对等的关系,返回,2.1.4 指令的分类,MCS-51单片机的指令如果按功能划分可以分为五类: 1,数据传送类指令:完成数据在单片机内部之间的传送。 分为
6、8位数和16位两种。除了奇偶位外,指令的执行对 PSW无影响。 2,算术运算指令:用于操作数之间的加、减、乘除运算。 【特点】:多数情况下:操作数之一在累加器A中,结果也保留在A中,运算结果要影响PSW(进位标志、奇偶和溢出标志等)。 3,逻辑操作和循环移位指令:操作数之间的逻辑加、逻辑与、取反和异或等操作。多数情况下一个操作数在A中,结果也存于A。移位指令分为左移、右移和带进位和不带进位几种情况。与算术类指令相比逻辑类指令基本不影响PSW的内容。,4,控制转移类指令:条件转移、无条件转移,调用和返回。 【 特点】:通过修改程序指针PC的内容,使CPU转到另一处执行,从而改变程序的流向。 5,
7、位操作指令:位传送、位置位、位运算和位控制转移等操作。 【 特点】:按位操作而不是按字节的操作。位控转移的判断不是检测某一个字节而是对某一个位进行检测并决定是否进行程序转移。 这类指令基本不影响PSW的内容。,返回,2.2 寻址方式,在指令的操作数位置上,用于表征、寻找操作数的方式定义为“寻址方式”。 正确的理解、掌握寻址方式,是学习、使用指令的关键。 在MCS-51单片机中,共使用了七种寻址方式。 它们分别是: 1,寄存器寻址 5,变址寻址; 2,直接寻址 6,相对寻址; 3,立即数寻址 7,位寻址。 4,寄存器间接寻址,继续,2.2.1寄存器寻址,当所需要的操作数在内部某一个寄存器Rn中时
8、,将此寄存器名Rn直接写在指令的操作数的位置上。如: MOV A,R7 ;将寄存器R7中的内容送累加器A中。 MOV 20H,R0 ;将寄存器R0中的数据送内存20H单元 INC R1 ;将寄存器R1中的内容加一 ADD A,R3 ;A的内容与寄存器R3的内容相加送A 寄存器寻址方式的指令大多是单字节指令。指令本身并不带有操数,而是含有存放操作数的寄存器的3位代码。以MOV A,Rn为例,使用R7寄存器,所以rrr=111,既指令的机器码为:0EFH,1 1 1 0 1 r r r,操作码,寄存器代码,返回,E8HEFH,MOV A,Rn,2.2.2 直接寻址,指令本身含有操作数的8位或16位
9、地址。既指令直接给出了操作数的地址。如: MOV A,30H ;将RAM30H单元内容送累加器 这里30H是操作数在RAM中的地址。 很明显,直接寻址的指令长度是两个或三个字节。,n,n+1,30H,累加器A,直接寻址示意图,使用直接寻址应注意的三个问题:,1,指令助记符中direct是用16进制数表示的操作数地址。 当地址恰好在SFR区域时,指令也可以用寄存器名来表示。 如: MOV A,80H 可以写成 MOV A,P0 后者用SFR中寄存器的名字取代它的物理地址80H。很明显,后者更容易阅读和交流,所以我们提倡使用SFR中寄存器名称来代替直接地址。 如:MOV A,SBUF ;串口数据缓
10、冲器数据送A MOV IE,#00H ;初始化中断允许寄存器 MOV TH1,#0FEH ;为定时器1赋初值 尽管使用SFR的寄存器名称来取代直接地址,可以带来程序的可读性,但是在汇编时,仍要将寄存器名字转换为直接地址。,2,当直接地址时在工作寄存器区中时,可以使用两种寻址方式来访问。 如: MOV A,00H ;将RAM中00H单元数据送累加器A MOV A,R0 ;将工作寄存器R0的内容送累加器A 这里使用了不同的寻址方式,其指令的结构也不相同。 前者是:11100101(0E5H)、00000000(00H) 双字节。 后者的机器码是:11101000(0E8H) 单字节; 在物理结构上
11、,R0与RAM的00H单元恰好是同一单元,所以不同的指令而执行结果是一样的。 类似的还有累加器A: INC A 寄存器寻址方式(单字节); INC ACC 直接寻址方式(双字节); INC 0E0H 直接寻址方式(双字节)。,3,在指令系统中:字节地址与位地址是完全不同的概念。 前者用direct表示,而后者用bit 表示,但在指令中都是用16进制表示的数。 如: MOV A,20H ;将RAM的20H单元内容送A MOV C,20H ;将位寻址区中的位地址为20H位内容送 PSW 中的Cy中。,片内 RAM(20H-2FH)中的位寻址区结构图,2FH,20H,字节地址,返回,24H,位地址,
12、返回前一次,2.2.3立即寻址,指令本身直接含有所需要的8位或16位的操作数。 将此数称为“立即数”(使用#标明)。如: MOV A,#30H ;将(8位)立即数送累加器A MOV DPTR,#2000H ;16位立即数送DPTR积存器 【注意】:MOV A,#30H MOV A,30H 两者的区别。 立即数寻址的指令长度为2或3个字节。,n,n+1,ROM,累加器A,MOV A,#30H 指令执行流程,ROM,DPTR,MOV DPTR,#2000H指令的存储和执行,返回,2.2.4 寄存器间接寻址,指令中含有保存操作数地址的寄存器Ri。 MOV A,Ri ( i=0、1) CPU首先根据指
13、令中寄存器名Ri找到操作数地址,然后再从该地址中找到操作数 x。 如:MOV R0,#30H ;立即数送R0寄存器 MOV A,R0 ;从RAM的H单元取数送累加器A 【注意】MOV A,R0 和 MOV A,R0 指令的区别。,30H,R0,00H,累加器A,1,2,3,使用寄存器间址指令时应注意的三个问题:,1,间址寄存器Ri只能使用R0、R1寄存器(i=0、1)。 2,间址方式不仅用于片内RAM,同样也适用于片外RAM。 对于片内RAM使用Ri寄存器,寻址范围为00HFFH。 对于片外RAM,可以使用Ri,也可以使用DPTR做间址寄存器。两者区别在于后者寻址范围为0000HFFFFH,两
14、者都可以RAM和ROM。 3,间址方式的指令不能访问SFR中的单元。如下面的程序是错误的: MOV R1,#80H MOV A,R1 (因为80H为SFR的物理地址),MCS-51 片内 、片外 数据存储器示意图,特殊功能 寄存器 SFR,通用数据 存储器,80H 7FH,00H,FFH,片内数据存储器 片外数据存储器 256B个字节 64KB个字节,片外数据 存储器 64KB,0000H,FFFFH,注意: 1,访问片内RAM20H存储单元; MOV A,20H 2,访问片外RAM存储单元; MOV R0,#20H MOVX A,R0 3,尽管片内与片外的RAM单元 的00H-FFH地址相重
15、叠但由 于指令的不同不会发生地址 混乱。,返回,2.2.5 变址寻址,指令使用DPTR或PC中的内容作为基地址,再与累加器A的内容相加,其和作为操作数地址。如: MOVX A,A+PC ;PC内容与A的内容相加得操作数地址 并将此操作数送A MOVX A,A+DPTR;DPTR内容与A的内容相加得操作数 地址并将此操作数送A 使用变址指令时,要事先分别为A、DPTR赋值,以便获得操作数得地址。,变址指令只适用于对ROM存储器得访问,如查表等。 【举例】:已知ROM中0302H 单元有一个数x,现要把它送到累加器A中,试编程。 MOV DPTR,#0300H ;立即数送DPTR MOV A,#0
16、2H ;立即数送累加器A MOVC A,A+DPTR ;从ROM的00302单元取数送A,变址寻址示意图,02H,0300H,ALU,0302H,累加器A,DPTR,0300H + 02H 0302H,MOVC A,A+DPTR,返回,2.2.6 相对寻址,转移指令中使用的一种寻址方式。MCS-51单片机的指令系统中,有两类转移指令:相对转移( 2个或3个字节) 绝对转移(3个字节)。 在绝对转移指令中,指令直接给出转移的目标地址(2字节地址),执行时将目标地址直接送给PC,从而控制程序转移; 而相对转移指令在执行中是将PC值与指令中的8位偏移量进行相加,形成指令要转移的目标地址。 SJMP
17、rel 由指令中有一个8位偏移量 rel 为带符号位的补码,所以控制程序转移的范围为+127-128。,54H,2002H,ALU,2056H,累加器A,PC,2002H + 54H 2056H,操作码,偏移量,例如:SJMP 54H ;(80H、54H),2000H,2002H,(LOOP1),相对寻址使用中应注意的问题,与绝对寻址相比,相对寻址具有很好的“浮动性”,因此是编程人员普遍使用的一种寻址方式。 使用时,要注意3点: 1,CPU进行地址计算时,PC取值是执行本指令后的地址值。以上面的例子说明: 指令本身的首地址是2000H,执行完后变为2002H(既下一条指令的首地址)。 如果使用
18、三字节的相对转移指令,则PC=PC+3。,返回上一页,2,偏移量的计算: rel=目标地址-源地址-2 (2字节指令) 或: rel=目标地址-源地址-3 (3字节指令) 结果用补码的形式书写。 为了减少计算偏移量的计算,汇编程序允许使用“符号地址”的方式代替偏移量。如: SJMP loop1 汇编程序在翻译时,自动计算并将结果替换符号地址。 3, 如果转移地址的范围超过相对寻址的范围(如:-127+128)时,就要采用别的方式法,否则在编译时,提示出错。,返回,2.2.7 位寻址,在位寻址指令(位操作指令)中使用的位地址。 在一般的情况下,系统的数据都是按字节(8位)来存放、处理。 单片机在
19、控制、检测的应用中,系统的输入、输出数据有很多属于开关量信号。这些开关量信号以 bit - “位”的形式进行各种运算、处理和存储的。,MCS-51 单片机 控制、检测 系统,驱动器,电动机,外设1,外设2,状态信号,状态信号,控制信号,在MCS-51单片机的硬件设计上充分考虑了这种“布尔”变量的处理,不仅在指令系统中设计了“位操作”指令,而且在片内RAM区中还专门开辟了一个 “位寻址区”。这样,布尔变量可以向字节数据一样进行存储、寻址。 除了位寻址区外,RAM中的大多SFR都可以按位寻址,换句话,SFR除了有自己的字节地址外,在寄存器内的每一位还有其位地址。,【举例】:SETB 20H ;将位
20、地址为20H的位置一 SETB 90H ;将P1口的d0位置一 同字节寻址中的直接寻址一样,为了增加程序的可读性,凡在SFR中的位地址都可以使用符号地址来替代。如第二例中,完全可以使用下面的指令格式: MOV P1.0 ;将P0口的d0位置一 类似还有:MOV C,ACC.7 ;将累加器中的d7位送PSW的cy 这种指令在汇编程序进行翻译时,还是要先将符号地址转换为真正的位地址。,返回,2.3 数据传送指令,2.3.0 传送指令的特点 2.3.1 内部数据传送类指令 2.3.2 外部数据传送类指令 2.3.3 堆栈操作指令 2.3.4 数据交换指令,继续,数据传送是编程中使用最多、最主要的操作
21、。它的功能是将数据在累加器、片内的RAM、SFR及片外ROM、RAM之间进行传送。 在传送类指令中,必须指定被传送数据的源地址和目标地址。在传送过程中,源地址的内容不被改变。 传送类指令除了以累加器A为目标的传送对PSW的P有影响外,其余的传送类指令对PWS一概无影响。,【举例】:MOV A,R0 ;将R0寄存器中的数据送 累加器A中(注意寻址方式),指令通式:MOV ,2.3.0 传送指令的特点,返回,2.3.1 内部数据传送类指令,特点:指令的源操作数和目的操作数都在单片机内部。,1,立即寻址型传送指令,2,直接寻址型传送指令,3,寄存器寻址型传送指令,4,寄存器间址型传送指令,5,内部数
22、据传送类指令的使用,继续,1,立即寻址型传送指令,【特点】:原操作数字节是立即数,处在指令的第二或第三字节,所以这类指令都是多字节指令。这类指令有如下4条。 MOV A,#data ; A data (双字节指令) MOV Rn,#data ; Rn data (双字节指令) MOV Ri,#data ; (Ri) data (双字节指令) MOV direct,#data ; direct data (三字节指令) 这类指令多用于程序的初始化。如: MOV R0,#20H MOV A,#00H,立即寻址指令举例,已知:R0=20H,试问单片机执行如下指令后,累加器A、 R7、20H和21H单
23、元中的内容是什么。 MOV A,#18H ;立即数18H送累加器A MOV R7,#28H ;立即数28H送寄存器R7 MOV R0,#38H ;立即数38H送内存20H单元 MOV 21H,#48H ;立即数48H送内存21H单元,返回,2,直接寻址型传送指令,【特点】:指令中至少含有一个源操作数或目的操作数的地址。很明显,这也是2个或3个字节的指令格式,其中直接地址在第2或第3个字节上。这类指令有如下5条: MOV A,direct MOV direct,A MOV Rn,direct MOV Ri,direct MOV direct2,direct1 【注意】:direct为内部寄存器、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 单片机 指令系统 教程
链接地址:https://www.31doc.com/p-4099702.html