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