《单片机原理及应用(C语言版)》-周国运-电子教案 单片机原理及应用 C语言版 3

上传人:E**** 文档编号:89409281 上传时间:2019-05-24 格式:PPT 页数:150 大小:741.01KB
返回 下载 相关 举报
《单片机原理及应用(C语言版)》-周国运-电子教案 单片机原理及应用 C语言版 3_第1页
第1页 / 共150页
《单片机原理及应用(C语言版)》-周国运-电子教案 单片机原理及应用 C语言版 3_第2页
第2页 / 共150页
《单片机原理及应用(C语言版)》-周国运-电子教案 单片机原理及应用 C语言版 3_第3页
第3页 / 共150页
《单片机原理及应用(C语言版)》-周国运-电子教案 单片机原理及应用 C语言版 3_第4页
第4页 / 共150页
《单片机原理及应用(C语言版)》-周国运-电子教案 单片机原理及应用 C语言版 3_第5页
第5页 / 共150页
点击查看更多>>
资源描述

《《单片机原理及应用(C语言版)》-周国运-电子教案 单片机原理及应用 C语言版 3》由会员分享,可在线阅读,更多相关《《单片机原理及应用(C语言版)》-周国运-电子教案 单片机原理及应用 C语言版 3(150页珍藏版)》请在金锄头文库上搜索。

1、单片机原理及应用 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计,主 编:周国运 本章制作:周国运 中国水利水电出版社,第3章 MCS-51指令系统 及汇编程序设计,目 录 3.1 汇编语言概述 3.2 MCS-51单片机寻址方式 3.3 MCS-51单片机指令系统 3.4 MCS-51单片机伪指令 3.5 汇编语言程序设计举例,本章讨论MCS-51单片机的指令系统及汇编语言程序设计。 内容主要包括:汇编语言基本概念、寻址方式、指令系统、伪指令、汇编语言程序举例。 本章是单片机程序设计的基础,即便是主要用C语言做设计程序,但对某些要求较高的部分,还是需要用汇编语言来写程序。,3.1

2、 汇编语言概述,主要内容 3.1.1 指令和机器语言 3.1.2 汇编语言 3.1.3 汇编语言指令格式,3.1.1 指令和机器语言,一、指令和指令系统 指令:是计算机中CPU根据人的意图来执行某种操作的命令。 指令系统:是一台计算机(CPU)所能执行的全部指令的集合。 指令系统的强弱,决定了计算机智能的高低。,3.1.1 指令和机器语言,二、程序和程序设计语言 程序:人们编写的、使计算机完成某项工作的指令序列,称为程序。 程序设计:编写程序的过程叫程序设计 程序设计语言:编写程序的一整套规则、方法。 程序设计语言分类:分为机器语言、汇编语言和高级语言等。,3.1.1 指令和机器语言,三、机器

3、语言 机器语言:用二进制编码表示每条指令,是计算机能够直接识别和执行的语言。 目标程序:用机器语言编写的程序。 例如“13+25” ,在MCS-51中的机器码为 0 1 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 用十六进制表示指令码为: 74H 0DH 把13放到累加器A中 24H 19H A加25,结果仍放回A中,3.1.2 汇编语言,汇编语言:用助记符、符号、数字等表示指令的程序语言。 例如,上面的“13+25”的例子可写成: 汇编语言程序 机器语言代码 MOV A,#0DH 74H 0DH ADD A,#19H

4、 24H 19H 相对于机器语言来说,汇编语言容易理解和记忆。 汇编语言和机器语言都属于低级语言。,3.1.3 汇编语言指令格式,一、MCS-51汇编语言指令格式 由四部分组成,其一般格式如下: 标号: 操作码 操作数 ;注释 方括号中的内容可以没有,即可以没有标号、操作数和注释,至少要有操作码。其操作数部分最多可以是三项: 第1操作数 , 第2操作数 , 第3操作数 对MOV指令,有两项,第1操作数常称为目的操作数,第2操作数称为源操作数。,3.1.3 汇编语言指令格式,例如: START: MOV A,#23H ;23H A “START”为标号 “MOV”为操作码 “ A,#23H”为操

5、作数 “23H A”为注释,3.1.3 汇编语言指令格式,二、MCS-51汇编指令构成 1、单字节指令 指令中既包含有操作码,也包含有操作数,有两种情况。 1)指令码中隐含着对某个寄存器的操作 如:“INC A”、“MUL AB”、“RL A”、“CLR C”、“INC DPTR”等指令。 2)由指令码中的r r r或i指定操作数,3.1.3 汇编语言指令格式,这种情况是指令中使用了Rn或Ri 如“MOV Rn,A”编码格式为: 1 1 1 1 1 r r r rrr的取值为:07,表示R0R7 又如“MOV A,Ri”编码格式为: 1 1 1 0 0 1 1 i i取值为:0、1,表示R0、

6、R1,3.1.3 汇编语言指令格式,2、双字节指令 一个字节表示操作码,另一个字节表示操作数或操作数的地址。 3、三字节指令 一个字节表示操作码,另两个字节表示操作数或操作数的地址。,3.2 MCS-51单片机寻址方式,主要内容 3.2.1 立即数寻址 3.2.2 寄存器寻址 3.2.3 直接寻址 3.2.4 寄存器间接寻址 3.2.5 变址寻址 3.2.6 位寻址 3.2.7 指令寻址 3.2.8 寻址空间及指令中的符号,寻址方式:就是指CPU寻找参与运算的操作数的方式,或者寻找数据保存位置的方式。 7种寻址方式:立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、位寻址和指令寻址。

7、 寻址方式分两类:操作数寻址和指令寻址,在7种寻址方式中,除了指令寻址之外,其余6种都属于操作数寻址。 寻址方式是汇编语言程序设计中最基本的内容之一,必须要十分熟悉。,3.2 MCS-51单片机寻址方式,3.2.1 立即数寻址,立即数寻址也叫立即寻址、常数寻址。其操作数就在指令中,是指令的一部分,紧跟在操作码后面,用“#”符号作前缀,以区别地址。例如: MOV A,#2CH ;2CH A MOV A,2CH ;(2CH) A 前者表示把2CH这个数送给累加器A,后者表示把片内RAM中地址为2CH单元的内容送给累加器A。,3.2.1 立即数寻址,立即数也可以是16位的,如: MOV DPTR,#

8、1234H MOV TL2,#2345H MOV RCAP2L,#3456H 对于第2条指令,立即数的低8位送给了TL2,高8位送给了TH2;对于第3条指令,立即数的低8位送给了RCAP2L,高8位送给了RCAP2H。,3.2.2 寄存器寻址,寄存器寻址:就是由指令指出寄存器组R0R7中某一个或寄存器A、B、DPTR和C(位处理器的累加器)的内容作为操作数。例如: MOV A,R7 ;(R7) A MOV 36H,A ;(A) 36H ADD A,R0 ;(A)+(R0) A 对于工作寄存器组的操作,必须要考虑PSW中RS1、RS0的值,确定当前使用的是哪一组寄存器以及它们的实际地址。,3.2

9、.2 寄存器寻址,图3-1 寄存器寻址方式(INC R3),3.2.3 直接寻址,直接寻址:是指操作存放在片内RAM中,指令中给出操作数的地址。例如: MOV A,38H ;(38H) A 说明: (1)直接寻址方式可以访问片内RAM的低128字节和所有的特殊功能寄存器。 (2)直接寻址不能够访问片内RAM的高128字节,高128字节只能够间接访问。 对于特殊功能寄存器,既可以使用地址,也可以使用SFR名。例如: MOV A,P1 或 MOV A,90H,3.2.4 寄存器间接寻址,寄存器间接寻址:是指操作数存放在RAM中,指令中给出存放操作数地址的寄存器,指令执行时,通过寄存器内的地址,间接

10、地访问操作数。 存放地址的寄存器称为间址寄存器,在指令中,在寄存器前面加前缀“”表示。 MCS-51单片机规定,使用Ri(i=0、1,即指R0、R1)、SP和DPTR作间址寄存器。 寄存器间接寻址有以下几种情况。,3.2.4 寄存器间接寻址,一、使用Ri间接访问片内RAM 间接访问的范围:256字节(包括低128字节和高128字节),但不包括特殊功能寄存器。例如: MOV A,Ri ;(Ri) A MOV Ri,A ;(A)(Ri) (Ri):表示Ri指向的单元,即单元的地址((Ri)):表示Ri指向单元中的数据。 操作过程如图3-3所示。,3.2.4 寄存器间接寻址,对使用SP间接访问片内R

11、AM (在C语言中也可以访问片外RAM) ,仅用在堆栈操作中,见后面指令系统。,3.2.4 寄存器间接寻址,二、使用Ri间接访问片外RAM 间接访问的范围:片外RAM的64KB全空间。其指令只有两条: MOVX A,Ri ;(P2) (Ri) A MOVX Ri,A ;(A)(P2 Ri) 注意: (1)P2中的值作为高8位地址,Ri中的值作为低8位地址; (2)如果P2不改变,则范围为256B; (3)这两条指令均为总线操作,相应总线信号有效(高低8位地址、ALE、RD或WR)。,3.2.4 寄存器间接寻址,三、使用DPTR间接访问片外RAM 间接访问的范围:片外RAM的64KB全空间。其指

12、令也是只有两条: MOVX A,DPTR ;(DPTR) A MOVX DPTR,A ;(A)(DPTR) DPTR为16位地址。,3.2.5 变址寻址,变址寻址:实为基址加变址的间接寻址。指令中给出存放基址和变址的寄存器。 基地址寄存器:DPTR或PC; 变址寄存器:累加器A。 也在地址寄存器前面加上前缀“”。例如: MOVC A,A+DPTR ;(A)+(DPTR) A 该指令的操作过程如图3-4所示。,3.2.5 变址寻址,3.2.5 变址寻址,变址寻址的空间为程序存储器 寻址范围: 若使用DPTR为基地址寄存器,寻址范围为64KB; 若使用PC为基地址寄存器,寻址空间在PC之后256字

13、节范围内。 变址寻址主要用于查表操作,3.2.6 位寻址,位寻址:是指操作数是二进制位、位地址 位操作数地址范围:片内RAM中20H2FH,SFR中可以按位寻址的位。 位地址在指令中用bit表示。例如: SETB bit MOV C,bit,3.2.6 位寻址,位地址的4种表示方式: 1)直接位地址(00HFFH)。如32H 2)字节地址带位号。如20H.1,表示20H单元的第1位。 3)特殊功能寄存器名带位号。如P1.7,表示P1口的第7位。 4)位符号地址。具体的:SFR位名;用 “BIT”定义的位符号(如“flag BIT 01H”)。如TR0、flag,TR0表示定时器/计数器0的运行

14、控制位,flag表示01H位。,3.2.7 指令寻址,指令寻址:指令中的操作数给出转移的目标地址或目标地址的一部分。 指令寻址分为绝对寻址和相对寻址两种方式。 指令寻址用于控制转移指令中。,3.2.7 指令寻址,一、绝对寻址 绝对寻址:指令中的操作数给出转移的16位目标地址。 寻址范围:64KB全空间。 绝对寻址用在长转移和长调用指令中,例如: LJMP SER_INT_T1 ;无条件转移到T1中断服务程序 LCALL SUB_SORT ; SUB_SORT调用排序子程序,SUB_SORT为16位目标地址标号,SER_INT_T1为16位目标地址标号,3.2.7 指令寻址,二、相对寻址 相对寻

15、址:是以当前程序计数器PC值为基地址,加上指令中给出的偏移量rel,得到目标位置的地址。即: 目标地址PCrel rel目标地址PC 偏移量rel为8位补码,其值为-128+127。rel0表明目标地址小、源地址大,程序向回跳转;rel0,程序向前跳转。,3.2.7 指令寻址,例如: JZ FIRST ;(A)0,跳转到FIRST DJNZ R7,LOOP ;(R7)-10,跳转到LOOP 说明: (1)在实际编程中,不需要计算rel,rel由编译器自动计算; (2)当跳转范围超出了rel范围,编译器会提示,对程序做适当调整即可。,3.2.8 寻址空间及指令中的符号注释,3.2.8 寻址空间及

16、指令中的符号注释,二、指令中常用符号 Rn: n=07。当前选中的工作寄存器R0R7。 Ri: i=0、1。当前选中的工作寄存器组中可作为地址指针的R0和R1。 #data: 8位立即数。 #data16: 16位立即数。 direct: 8位片内RAM单元地址,包括低128B和SFR,但不包括高128B。 addr16: 程序存储空间的16位地址,3.2.8 寻址空间及指令中的符号注释,rel: 补码形式的8位地址偏移量。以下面指令的第一个字节为基地址,地址偏移量在-128+127。 bit: 片内RAM或SFR中的直接寻址位地址 : 间址寄存器的前缀符号,表示间接寻址。,3.2.8 寻址空间及指令中的符号注释,(): 表示中的内容 (): 表示由中指向的地址单元中的内容 : 逻辑与 : 逻辑或 : 逻辑异或 、: 指令操作流程,将内容送到箭头指向的地方

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

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

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