单片机原理及控制技术 教学课件 ppt 作者 王君 第3章MCS51系列单片机的指令系统及汇编语言程序设计

上传人:E**** 文档编号:89498986 上传时间:2019-05-25 格式:PPT 页数:78 大小:790KB
返回 下载 相关 举报
单片机原理及控制技术 教学课件 ppt 作者 王君 第3章MCS51系列单片机的指令系统及汇编语言程序设计_第1页
第1页 / 共78页
单片机原理及控制技术 教学课件 ppt 作者 王君 第3章MCS51系列单片机的指令系统及汇编语言程序设计_第2页
第2页 / 共78页
单片机原理及控制技术 教学课件 ppt 作者 王君 第3章MCS51系列单片机的指令系统及汇编语言程序设计_第3页
第3页 / 共78页
单片机原理及控制技术 教学课件 ppt 作者 王君 第3章MCS51系列单片机的指令系统及汇编语言程序设计_第4页
第4页 / 共78页
单片机原理及控制技术 教学课件 ppt 作者 王君 第3章MCS51系列单片机的指令系统及汇编语言程序设计_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《单片机原理及控制技术 教学课件 ppt 作者 王君 第3章MCS51系列单片机的指令系统及汇编语言程序设计》由会员分享,可在线阅读,更多相关《单片机原理及控制技术 教学课件 ppt 作者 王君 第3章MCS51系列单片机的指令系统及汇编语言程序设计(78页珍藏版)》请在金锄头文库上搜索。

1、第3章,MCS-51系列单片机的 指令系统及汇编语言程序设计,本章要点,MCS-51单片机的7种寻址方式 MCS-51单片机的指令系统 汇编语言的基本格式 程序结构及其设计方法 典型应用程序的设计,3.1 指令系统概述 3.1.1 汇编指令格式 3.1.2 指令描述符号介绍,MCS-51单片机汇编语言指令格式为:,2.1.1 汇编指令格式,MCS-51单片机汇编语言指令由以下几个部分组成: 标号 操作码 操作数或操作数地址 注释,标号 标号是程序员根据编程需要, 给指令设定的符号地址,可有可无; 标号由18个字符组成,第一个字符必须是英文字母,不能是数字或其它符号; 标号后必须用冒号; 在程序

2、中,不可以重复使用。 操作码 操作码表示指令的操作种类,规定了指令的具体操作。 比如:ADD(加操作),MOV (数据的传送操作)。,操作数或操作数地址 操作数或操作数地址表示参加运算的数据或数据的地址。操作数和操作码之间必须用空格分开,有两个以上操作数的操作数之间用逗号分隔。操作数一般有以下几种形式: 没有操作数项,操作数隐含在操作码中,如RET指令; 只有一个操作数,如CPL A指令; 有两个操作数,如MOV A, #00H指令,操作数之间以逗号相隔; 有三个操作数,如CJNE A, #00H, NEXT指令,操作数之间也以逗号相隔。 注释 注释是对指令的解释说明,用以提高程序的可读性;注

3、释前必须 以“;”和指令分开,注释在每条指令后都可以设有。,Rn 当前工作寄存器中的某一个,即R0R7; Ri R0或者R1 Direct 单片机内部RAM低128字节(00h7fh)中的某 个字节地址, 或者是某个专用寄存器的名字; #data 8位(1字节)立即数 #data16 16位(2字节)的立即数 Addr16 16位目的地址,在LJMP和LCALL的指令中采用 Addr11 11位目的地址,只在AJMP和ACALL指令中采用 Rel 相对转移指令中的偏移量。 DPTR 数据指针(由DPH和DPL构成) Bit 内部RAM(包括专用寄存器)中可寻址位的地址或 名字,2.1.2 指令

4、中符号的意义说明,A 累加器ACC B B寄存器 间接寻址标志 / 加在位地址前,表示对该位状态取反 (X) 某寄存器或某单元的内容 (X) 由X间接寻址的单元中的内容,操作数是指令的重要组成部分,指出了参与操作的数据或数据的地址。寻找操作数地址的方式称为寻址方式。一条指令采用什么样的寻址方式,是由指令的功能决定的。寻址方式越多,指令功能就越强。 MCS-51指令系统共使用了7种寻址方式: 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 位寻址 变址寻址 相对寻址,3.2 MCS-51单片机的寻址方式,MOV A,#40H;将40H这个立即数传送给累加器ACC,“#”符号称为立即数符号,40H

5、在这里称为立即数。 立即数寻址是指将操作数直接写在指令中。 比如: MOV DPTR,#6789H MOV R0,#23H,A,XX,40H,3.2.1 立即寻址,寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。MOV A,R0 数据存放在R0R7中的某个通用寄存器内,或者放在某个专用寄存器中。 e.g.: MOV A,R7 ADD A,R0,3.2.2 寄存器寻址,操作过程:MOV A,R0;设R0的值为40H,R0,A,XX,40H,直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址

6、的存储器主要有内部RAM区和特殊功能寄存器SFR区。 MOV A,30H;将内部RAM30H单元内的数传送给累加器ACC。 MOV TMOD,#20h ;TMOD定时器方式控制寄存器,属于SFR ADD A,30H ;片内RAM30H单元的数据加到累加器ACC INC 70H ;片内RAM70H单元的数据加1 MOV 30H,70H ;片内RAM70H单元的数据传送到30H单元。 DEC 50H ;片内RAM50H单元的数据减1 例如:MOV A,30H ;假如(30H)=55H,30H,XX,A,55H,3.2.3 直接寻址,3.2.4 寄存器间接寻址 在51单片机中有两个寄存器可以用于间接

7、寻址,它们是R0和R1。当指向片外的64KB的RAM地址空间时,可用DPTR作间接寄存器。 MOV A, R0 假如R0寄存器中的数据是50H,则以上指令的意思是:将内部RAM中50H单元内的数传送给累加器ACC。 e.g.假如R1内的数是70H,在内部RAM的70H单元中存放的数据是00H,在执行以下指令后,外部RAM中3FFFH单元的内容是00H。 MOV A,R1 MOV DPTR,#3FFFH MOVX DPTR,A,以R0作为间址寄存器方式:MOV A , R0,以DPTR作为间址寄存器方式:,MOV DPTR,#3FFFH MOVX A, DPTR,3.2.5 变址寻址,EG. :

8、MOVC A,A+DPTR 指令含义:假设在执行指令前,数据指针DPTR中的数据是1000H,累加器ACC中的数据是50H,则上述指令执行的操作是将:程序存储器1050H单元中的数据传送给累加器ACC。 同样寻址方式的指令还有两条: MOVC A,A+PC JMP A+DPTR 该类指令常用于编写查表程序。,指令:MOVC A,A+DPTR 工作过程:,3.2.6 相对寻址,在跳转程序中有一种相对寻址方式,程序的书写方式是: SJMP rel 程序含义:当程序执行到上述语句时,在当前语句位置的基础上向前或向后跳转rel中指明的位置。 范例 JZ rel CJNE A, #DATA , rel

9、DJNZ R0,rel,3.2.7 位寻址,当单片机要进行某一位二进制数操作时,可采用位寻址。 Eg. :SETB C 指令含义:将专用寄存器PSW中的CY位置为1。 CLR P1.0;将单片机的P1.0清“0”。 SETB P1.0;将单片机的P1.0置“1”。,MCS-51单片机指令系统包括111条指令 按功能可以划分为以下5类: 数据传送和交换指令(29条) 算术运算指令(24条) 逻辑运算指令(24条) 控制转移指令(17条) 位操作指令(17条),3.3 MCS-51系列单片机的指令系统,2.2.1 数据传送和交换类指令,常用助记符: MOV 单片机内部RAM中的数据传递 MOVX

10、累加器和单片机外部数据存储器间数据传递 MOVC 累加器和程序存储器之间的数据传递 XCH 累加器和某个内部RAM单元进行数据交换 XCHD 累加器和某个内部RAM单元进行低半字节数据交换 PUSH 将某个内部RAM单元的数据压入堆栈 POP 将堆栈内的数据弹出,数据传送和交换类指令主要有以下几种: 内部数据传递指令 数据指针赋值指令 片外数据传送指令 ROM数据访问指令 栈操作指令 数据交换指令,一、内部数据传送指令 1、以累加器A为目的操作数的传送指令 ( 4条) MOV A,#data ; A data MOV A,direct ; A (direct) MOV A,Rn ; A(Rn)

11、 MOV A,Ri ; A(Ri),Eg:MOV A,30H,Eg:MOV A,#10H,Eg. : MOV A,R0,Eg.: MOV A,R2,注意:在使用Ri进行间址寻址时,只能够使用R0和R1。,2.以通用寄存器Rn为目的的传送指令:( 3条) MOV Rn,A ; Rn (A) MOV Rn,direct ; Rn(direct) MOV Rn,#data ; Rn data,Eg:MOV R2,A,Eg:MOV R2,30H,Eg:MOV R2,#30H,以直接地址为目的的传送指令:( 5条) MOV direct ,#data ; direct data MOV direct1,

12、direct2 ; direct1 (direct2) MOV direct,A ; direct (A) MOV direct ,Ri ; direct (Ri) MOV direct,Rn ; direct (Rn),Eg:MOV 30H,#33H,Eg:MOV 30H,31H,Eg:MOV 30H,R0,Eg:MOV 30H,A,Eg:MOV 30H,R3,以通用寄存器间接地址为目的的传送指令:( 3条) MOV Ri,A ; (Ri) (A) MOV Ri,direct ; (Ri) (direct) MOV Ri,#data ; (Ri) data,Eg. : MOV R1,A,Eg

13、:MOV R1,30H,Eg:MOV R1,#30H,二、数据指针赋值指令(16位数据指针),当要对片外的RAM和I/O接口进行访问时,或进行查表操作 时,通常要对DPTR赋值。指令为: MOV DPTR, #data16,Eg:将数据指针DPTR指向存于ROM中的表格首地址。 MOV DPTR,#TABLE,Eg:将数据指针DPTR指向外部RAM的2000H单元。 MOV DPTR, #2000H,三、片外数据传递指令,使用DPTR和Ri进行间接寻址 MOVX A, DPTR ;A (DPTR)片外 MOVX A,Ri ;A (Ri)片外 MOVX DPTR,A ;(DPTR)片外(A) M

14、OVX Ri,A ;(Ri)片外(A) 注意: 该指令用于在单片机和外部RAM、扩展I/O的数据传送; 使用Ri时,只能访问低8位地址为00HFFH地址段; 使用DPTR时,能访问0000H FFFFH地址段。,应用举例:,例: MOV DPTR,#2003H MOV A, #00H MOVX DPTR,A 指令执行过程:,注意:只有累加器A才能把数据传到外部RAM,或接收从外 部数据存储器传回的数据。 比如:MOVX 20H, DPTR MOVX DPTR,SBUF MOVX DPTR,R2 MOVX DPTR,R1 都是错误的 思考:如果要将内部RAM中40H单元中的数据传递到外部RAM的

15、2000H单元中,应如何解决?试写出相应程序。 MOV DPTR,#2000H MOV A,40H MOVX DPTR,A,四、查表指令,指令格式: MOVC A, A+DPTR ;A (A)+(DPTR) MOVC A, A+PC ;A (A)+(PC),Eg:MOV DPTR, #3000H MOV A, #55H MOVC A, A+DPTR,(ROM数据传送指令)2条,例:在累加器A中存放有09间的某个数,现要求查出该数的7段共阴显示代码,并将代码传回累加器。 解决方案:在程序存储器中划出一个区域用于存放09的7段共阴显示代码,比如将代码存放在0400H开始的地方。程序如下: MOV DPTR, #0400H MOVC A , A+DPTR ORG 0400H DB 3FH ;0的7段共阴显示代码 DB 06H ;1的7段共阴显示代码 DB 5BH ;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号