单片机原理及应用C语言版3.ppt
《单片机原理及应用C语言版3.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用C语言版3.ppt(150页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机原理及应用C语言版3 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第第3章章 MCS-51指令系统指令系统及汇编程序设计及汇编程序设计目目 录录3.1 汇编语言概述汇编语言概述 3.2 MCS-51单片机寻址方式单片机寻址方式3.3 MCS-51单片机指令系统单片机指令系统3.4 MCS-51单片机伪指令单片机伪指令3.5 汇编语言程序设计举例汇编语言程序设计举例 本章讨论本章讨论MCS-51单片机的指令系统及单片机的指令系统及汇编语言程序设计。汇编语言程
2、序设计。内容主要包括:内容主要包括:汇编语言基本概念、寻汇编语言基本概念、寻址方式、指令系统、伪指令、汇编语言程址方式、指令系统、伪指令、汇编语言程序举例。序举例。本章是单片机程序设计的基础本章是单片机程序设计的基础,即便是,即便是主要用主要用C语言做设计程序,但对某些要求较语言做设计程序,但对某些要求较高的部分,还是需要用汇编语言来写程序。高的部分,还是需要用汇编语言来写程序。3.1 汇编语言概述汇编语言概述 主要内容主要内容3.1.1 指令和机器语言指令和机器语言3.1.2 汇编语言汇编语言3.1.3 汇编语言指令格式汇编语言指令格式3.1.1 指令和机器语言指令和机器语言一、指令和指令系
3、统一、指令和指令系统指令:指令:是计算机中是计算机中CPU根据人的意图来根据人的意图来执行某种操作的命令。执行某种操作的命令。指令系统:指令系统:是一台计算机(是一台计算机(CPU)所能)所能执行的全部指令的集合。执行的全部指令的集合。指令系统的强弱,决定了计算机智能的指令系统的强弱,决定了计算机智能的高低。高低。3.1.1 指令和机器语言指令和机器语言二、程序和程序设计语言二、程序和程序设计语言程序:程序:人们编写的、使计算机完成某项人们编写的、使计算机完成某项工作的指令序列,称为程序。工作的指令序列,称为程序。程序设计:程序设计:编写程序的过程叫程序设计编写程序的过程叫程序设计程序设计语言
4、:程序设计语言:编写程序的一整套规则、编写程序的一整套规则、方法。方法。程序设计语言分类:程序设计语言分类:分为机器语言、汇分为机器语言、汇编语言和高级语言等。编语言和高级语言等。3.1.1 指令和机器语言指令和机器语言三、机器语言三、机器语言机器语言:机器语言:用二进制编码表示每条指令,用二进制编码表示每条指令,是计算机能够直接识别和执行的语言。是计算机能够直接识别和执行的语言。目标程序:目标程序:用机器语言编写的程序。用机器语言编写的程序。例如例如“13+25”,在,在MCS-51中的中的机器机器码为码为0 1 1 1 0 1 0 0 0 0 0 0 1 1 0 10 0 1 0 0 1
5、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,#0DH74H 0DHADD A,#19H24H 19H相对于机器语言来说,汇编语言容易理相对于机器语言来说,汇编语言容易理解和记忆解和记忆。汇编语言和机
6、器语言都属于低级语言汇编语言和机器语言都属于低级语言。3.1.3 汇编语言指令格式汇编语言指令格式一、一、MCS-51汇编语言指令格式汇编语言指令格式由四部分组成由四部分组成,其一般格式如下:,其一般格式如下:标号:标号:操作码操作码 操作数操作数 ;注释;注释方括号中的内容可以没有,即可以没有方括号中的内容可以没有,即可以没有标号、操作数和注释,至少要有操作码。其标号、操作数和注释,至少要有操作码。其操作数部分最多可以是三项:操作数部分最多可以是三项:第第1操作数操作数 ,第第2操作数操作数 ,第第3操作数操作数对对MOV指令,有两项,第指令,有两项,第1操作数常称操作数常称为为目的操作数目
7、的操作数,第,第2操作数称为操作数称为源操作数源操作数。3.1.3 汇编语言指令格式汇编语言指令格式例如例如:START:MOVA,#23H;23H A“START”为标号为标号“MOV”为操作码为操作码“A,#23H”为操作数为操作数“23H A”为注释为注释 3.1.3 汇编语言指令格式汇编语言指令格式二、二、MCS-51汇编指令构成汇编指令构成1、单字节指令、单字节指令指令中既包含有操作码,也包含有操作指令中既包含有操作码,也包含有操作数,有两种情况。数,有两种情况。1)指令码中隐含着对某个寄存器的操作)指令码中隐含着对某个寄存器的操作如:如:“INC A”、“MUL AB”、“RL A
8、”、“CLR C”、“INC DPTR”等指令。等指令。2)由指令码中的)由指令码中的r r r或或i指定操作数指定操作数 3.1.3 汇编语言指令格式汇编语言指令格式这种情况是指令中使用了这种情况是指令中使用了Rn或或Ri如如“MOVRn,A”编码格式为:编码格式为:1 1 1 1 1 r r rrrr的取值为:的取值为:07,表示,表示R0R7又如又如“MOV A,Ri”编码格式为:编码格式为:1 1 1 0 0 1 1 ii取值为:取值为:0、1,表示,表示R0、R13.1.3 汇编语言指令格式汇编语言指令格式2、双字节指令、双字节指令一个字节表示操作码,另一个字节表示一个字节表示操作码
9、,另一个字节表示操作数或操作数的地址。操作数或操作数的地址。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寻找参与运算的寻找参与运算的
10、操作数的方式,或者寻找数据保存位置的操作数的方式,或者寻找数据保存位置的方式方式。7种寻址方式:种寻址方式:立即数寻址、寄存器寻立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、直接寻址、寄存器间接寻址、变址寻址、位寻址和指令寻址。址、位寻址和指令寻址。寻址方式分两类:寻址方式分两类:操作数寻址和指令寻操作数寻址和指令寻址址,在,在7种寻址方式中,除了指令寻址之外,种寻址方式中,除了指令寻址之外,其余其余6种都属于操作数寻址。种都属于操作数寻址。寻址方式是汇编语言程序设计中最基本寻址方式是汇编语言程序设计中最基本的内容之一,必须要十分熟悉。的内容之一,必须要十分熟悉。3.2 MCS-
11、51单片机寻址方式单片机寻址方式 3.2.1 立即数寻址立即数寻址立即数寻址也叫立即寻址、常数寻址立即数寻址也叫立即寻址、常数寻址。其操作数就在指令中,是指令的一部分其操作数就在指令中,是指令的一部分,紧,紧跟在操作码后面,用跟在操作码后面,用“#”符号作前缀,以符号作前缀,以区别地址。例如:区别地址。例如:MOV A,#2CH;2CH A MOV A,2CH;(;(2CH)A前者表示把前者表示把2CH这个数送给累加器这个数送给累加器A,后,后者表示把片内者表示把片内RAM中地址为中地址为2CH单元的内单元的内容送给累加器容送给累加器A。3.2.1 立即数寻址立即数寻址立即数也可以是立即数也可
12、以是16位的位的,如:,如:MOVDPTR,#1234HMOVTL2,#2345HMOVRCAP2L,#3456H对于第对于第2条指令,立即数的低条指令,立即数的低8位送给了位送给了TL2,高,高8位送给了位送给了TH2;对于第;对于第3条指令,条指令,立即数的低立即数的低8位送给了位送给了RCAP2L,高,高8位送给位送给了了RCAP2H。3.2.2 寄存器寻址寄存器寻址寄存器寻址:寄存器寻址:就是由指令指出寄存器组就是由指令指出寄存器组R0R7中某一个或寄存器中某一个或寄存器A、B、DPTR和和C(位处理器的累加器)的内容作为操作数(位处理器的累加器)的内容作为操作数。例如:例如:MOVA
13、,R7;(;(R7)AMOV36H,A;(;(A)36HADDA,R0;(;(A)+(R0)A对于工作寄存器组的操作,必须要考虑对于工作寄存器组的操作,必须要考虑PSW中中RS1、RS0的值,确定当前使用的是的值,确定当前使用的是哪一组寄存器以及它们的实际地址。哪一组寄存器以及它们的实际地址。3.2.2 寄存器寻址寄存器寻址图图3-1 寄存器寻址方式(寄存器寻址方式(INC R3)程序存储器程序存储器片内片内RAM:+1PC00011011操作码操作码工作寄存器地址工作寄存器地址13H(R3)24H:00010r r r:PSWRS1 RS03.2.3 直接寻址直接寻址直接寻址:直接寻址:是指
14、操作存放在片内是指操作存放在片内RAM中,中,指令中给出操作数的地址指令中给出操作数的地址。例如。例如:MOVA,38H;(38H)A说明:说明:(1)直接寻址方式可以访问片内直接寻址方式可以访问片内RAM的低的低128字节和所有的特殊功能寄存器字节和所有的特殊功能寄存器。(2)直接寻址不能够访问片内直接寻址不能够访问片内RAM的高的高128字节,高字节,高128字节只能够间接访问字节只能够间接访问。对于特殊功能寄存器,既可以使用地址,对于特殊功能寄存器,既可以使用地址,也可以使用也可以使用SFR名。例如:名。例如:MOVA,P1 或或 MOVA,90H 3.2.4 寄存器间接寻址寄存器间接寻
15、址寄存器间接寻址:寄存器间接寻址:是指操作数存放在是指操作数存放在RAM中,指令中给出存放操作数地址的寄中,指令中给出存放操作数地址的寄存器,指令执行时,通过寄存器内的地址,存器,指令执行时,通过寄存器内的地址,间接地访问操作数间接地访问操作数。存放地址的寄存器称为间址寄存器存放地址的寄存器称为间址寄存器,在,在指令中,在指令中,在寄存器前面加前缀寄存器前面加前缀“”表示表示。MCS-51单片机规定,单片机规定,使用使用Ri(i=0、1,即指即指R0、R1)、)、SP和和DPTR作间址寄存器作间址寄存器。寄存器间接寻址有以下几种情况。寄存器间接寻址有以下几种情况。3.2.4 寄存器间接寻址寄存
16、器间接寻址一、使用一、使用Ri间接访问片内间接访问片内RAM间接访问的范围:间接访问的范围:256字节字节(包括低(包括低128字节和高字节和高128字节),字节),但不包括特殊功能寄但不包括特殊功能寄存器存器。例如:。例如:MOVA,Ri;(Ri)AMOVRi,A;(A)(Ri)(Ri):表示:表示Ri指向的单元,即单元的地址指向的单元,即单元的地址((Ri)):表示:表示Ri指向单元中的数据。指向单元中的数据。操作过程如图操作过程如图3-3所示。所示。3.2.4 寄存器间接寻址寄存器间接寻址对使用对使用SP间接访问片内间接访问片内RAM(在(在C语言语言中也可以访问片外中也可以访问片外RA
17、M),仅用在堆栈操仅用在堆栈操作中作中,见后面指令系统。,见后面指令系统。图图3-3 间接寻址间接寻址(MOV A,R0)示意图示意图 62HA:62H 98H 98HR0:片内片内RAM3.2.4 寄存器间接寻址寄存器间接寻址二、使用二、使用Ri间接访问片外间接访问片外RAM间接访问的范围:间接访问的范围:片外片外RAM的的64KB全空全空间间。其指令只有两条:。其指令只有两条:MOVXA,Ri ;(P2)(Ri)AMOVXRi,A ;(A)(P2 Ri)注意:注意:(1)P2中的值作为高中的值作为高8位地址,位地址,Ri中的值作为低中的值作为低8位地址位地址;(2)如果如果P2不改变,则范
18、围为不改变,则范围为256B;(3)这两条指令均为总线操作这两条指令均为总线操作,相应,相应总线信号有效(高低总线信号有效(高低8位地址、位地址、ALE、RD或或WR)。)。3.2.4 寄存器间接寻址寄存器间接寻址三、使用三、使用DPTR间接访问片外间接访问片外RAM间接访问的范围:间接访问的范围:片外片外RAM的的64KB全空全空间间。其指令也是只有两条:。其指令也是只有两条:MOVXA,DPTR;(DPTR)AMOVXDPTR,A;(A)(DPTR)DPTR为为16位地址。位地址。3.2.5 变址寻址变址寻址变址寻址:变址寻址:实为基址加变址的间接寻址实为基址加变址的间接寻址。指令中给出存
19、放基址和变址的寄存器。指令中给出存放基址和变址的寄存器。基地址寄存器:基地址寄存器:DPTR或或PC;变址寄存器:变址寄存器:累加器累加器A。也在地址寄存器前面加上前缀也在地址寄存器前面加上前缀“”。例如。例如:MOVCA,A+DPTR;(A)+(DPTR)A该指令的操作过程如图该指令的操作过程如图3-4所示。所示。3.2.5 变址寻址变址寻址ROM:DPTR 03E2H+0414H 38HA32H:A38H图图3-4 变址寻址示意图变址寻址示意图3.2.5 变址寻址变址寻址变址寻址的空间为程序存储器变址寻址的空间为程序存储器寻址范围:寻址范围:若若使用使用DPTR为基地址寄存器,寻为基地址寄
20、存器,寻址范围址范围为为64KB;若若使用使用PC为基地址寄存器,寻址为基地址寄存器,寻址空间在空间在PC之后之后256字节范围内字节范围内。变址寻址主要用于查表操作变址寻址主要用于查表操作 3.2.6 位寻址位寻址位寻址:位寻址:是指操作数是二进制位是指操作数是二进制位、位地址位地址位操作数地址范围:位操作数地址范围:片内片内RAM中中20H2FH,SFR中可以按位寻址的位中可以按位寻址的位。位地址在指令中用位地址在指令中用bit表示。例如:表示。例如:SETBbitMOVC,bit 3.2.6 位寻址位寻址位地址的位地址的4种表示方式:种表示方式:1)直接位地址)直接位地址(00HFFH)
21、。如。如32H2)字节地址带位号)字节地址带位号。如。如20H.1,表示,表示20H单元的第单元的第1位。位。3)特殊功能寄存器名带位号)特殊功能寄存器名带位号。如。如P1.7,表示表示P1口的第口的第7位。位。4)位符号地址)位符号地址。具体的:。具体的:SFR位名位名;用用“BIT”定义的位符号(如定义的位符号(如“flag BIT 01H”)。如)。如TR0、flag,TR0表示定时器表示定时器/计数器计数器0的运行控制位,的运行控制位,flag表示表示01H位。位。3.2.7 指令寻址指令寻址指令寻址:指令寻址:指令中的操作数给出转移的指令中的操作数给出转移的目标地址或目标地址的一部分
22、目标地址或目标地址的一部分。指令寻址分为绝对寻址和相对寻址指令寻址分为绝对寻址和相对寻址两种两种方式。方式。指令寻址用于控制转移指令中。指令寻址用于控制转移指令中。3.2.7 指令寻址指令寻址一、绝对寻址一、绝对寻址绝对寻址:绝对寻址:指令中的操作数给出转移的指令中的操作数给出转移的16位目标地址位目标地址。寻址范围:寻址范围:64KB全空间全空间。绝对寻址用在长转移和长调用指令中,绝对寻址用在长转移和长调用指令中,例如:例如:LJMPSER_INT_T1;无条件转移到;无条件转移到T1中断服务程序中断服务程序LCALLSUB_SORT;SUB_SORT调用排序子程序调用排序子程序SUB_SO
23、RT为为16位目标地址标号位目标地址标号SER_INT_T1为为16位目标地址标号位目标地址标号3.2.7 指令寻址指令寻址二、相对寻址二、相对寻址相对寻址:相对寻址:是以当前程序计数器是以当前程序计数器PC值为值为基地址,加上指令中给出的偏移量基地址,加上指令中给出的偏移量rel,得到,得到目标位置的地址目标位置的地址。即:。即:目标地址目标地址PCrelrel目标地址目标地址PC偏移量偏移量rel为为8位补码位补码,其值为其值为-128+127。rel0表明目标地址小、源地址大,程序向表明目标地址小、源地址大,程序向回跳转;回跳转;rel0,程序向前跳转。,程序向前跳转。3.2.7 指令寻
24、址指令寻址例如:例如:JZFIRST;(;(A)0,跳转到,跳转到FIRSTDJNZR7,LOOP;(;(R7)-10,跳转到,跳转到LOOP说明:说明:(1)在实际编程中在实际编程中,不需要计算不需要计算rel,rel由编译器自动计算;由编译器自动计算;(2)当跳转范围超出了当跳转范围超出了rel范围,编译范围,编译器会提示,对程序做适当调整即可。器会提示,对程序做适当调整即可。3.2.8 寻址空间及指令中的符号注释寻址空间及指令中的符号注释 一、寻址方式、寻址空间及范围一、寻址方式、寻址空间及范围寻址方式寻址方式操作数及寻址空间范围操作数及寻址空间范围立即数寻址立即数寻址在在ROM中,中,
25、随指令读入随指令读入直接寻址直接寻址片内片内RAM中,中,低低128字节和字节和SFR寄存器寻址寄存器寻址使用的寄存器:使用的寄存器:R0R7、A、B、C、DPTR 寄存器寄存器间接寻址间接寻址片内片内RAM:用用Ri、SP;范围范围256B,不含,不含SFR片外片外RAM:用用Ri、DPTR;范围为范围为64KB变址寻址变址寻址用用A+PC、A+DPTR;在;在ROM中;中;范围分别为范围分别为PC之后之后256B之内和之内和64KB全空间全空间位寻址位寻址在位寻址区域在位寻址区域;RAM的的202FH和和SFR指令绝对寻址指令绝对寻址 操作数是目标地址;在操作数是目标地址;在ROM中;中;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 语言版
限制150内