第三章 80C51单片机的指令系统1课件_第1页
第三章 80C51单片机的指令系统1课件_第2页
第三章 80C51单片机的指令系统1课件_第3页
第三章 80C51单片机的指令系统1课件_第4页
第三章 80C51单片机的指令系统1课件_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2第第3 3章章 80C5180C51的指令系统的指令系统3.1 指令格式及常用符号指令格式及常用符号(了解(了解,记忆)记忆)3.2 80C51的寻址方式的寻址方式 (重点)(重点)3.3 数据传送类指令(数据传送类指令(29条条)(重点)(重点)3.4 算术运算类指令(算术运算类指令(24条)条)(重点)(重点)3.5 逻辑运算与循环类指令(逻辑运算与循环类指令(24条)条)(重点)(重点)3.6 控制转移类指令(控制转移类指令(17条)条) (重点)(重点)3.7 位操作类指令(位操作类指令(17条)条) (重点)(重点)33.1 MCS51单片机汇编语言与指令格式单片机汇编语言与指令格

2、式n 由于构成计算机的电子器件特性所决定, 计算机只能识别二进制代码。 这种以二进制代码来描述指令功能的语言, 称之为机器语言, 用机器语言组成的程序, 称为目标程序。 计算机就是按照机器语言的指令来完成各种功能操作的, 它具有程序简捷、 占用存储空间小、 执行速度快、 控制功能强等特点。 43.1.1单片机的汇编语言n解释程序指令指令系统指令程序源程序目的程序机器语言编译程序计算机全部指令的集合 是指定计算机执行特定操作的命令。CPU就是根据指令来指挥和控制微型机各部分协调地动作,以完成规定的操作为解决某一具体问题或为达到某些目的,将指令和数据编写成一个相互联系的指令序列 如果所用指令编写的

3、程序是计算机能直接理解和执行的二进制代码形式,那么所用指令系统叫机器语言机器语言 用计算机能够识别和执行的二进制编码而写的程序用户为解决自己的问题所编写的程序是将源程序全部翻译成目的程序,再由计算机执行的语言处理程序是取一条高级语言语句,就解释一次,将其翻译成目的程序的语言处理程序5什么是汇编语言(1)n汇编语言是一种面向机器的低级程序设计语言n汇编语言以助记符形式表示每一条计算机指令助记符(mnemonic)是便于人们记忆、并能描述指令功能和指令操作数的符号助记符一般就是表明指令功能的英语单词或其缩写6什么是汇编语言(2)n用助记符表示的指令就是汇编语言中的汇编格式指令n汇编格式指令以及使用

4、它们编写程序的规则就形成汇编语言(Assembly Language)n用汇编语言书写的程序就是汇编语言程序,或称汇编语言源程序n汇编程序将汇编语言程序“汇编”成机器代码目标模块 汇编语言程序与汇编程序是两个概念汇编语言程序与汇编程序是两个概念7什么是汇编语言(3)n汇编语言的主要特点:汇编语言程序与处理器指令系统密切相关程序员可直接、有效地控制系统硬件形成的可执行文件运行速度快、占用主存容量少8汇编语言和高级语言(1)n汇编语言与处理器密切相关 汇编语言程序的通用性、可移植性较差n高级语言与具体计算机无关 高级语言程序可以在多种计算机上编译后执行汇编语言:汇编语言:高级语言:高级语言: 9汇

5、编语言和高级语言(2)n汇编语言功能有限、涉及硬件细节 编写程序比较繁琐,调试起来也比较困难n高级语言提供了强大的功能,不必关心琐碎问题 类似自然语言的语法,易于掌握和应用汇编语言:汇编语言:高级语言:高级语言: 10汇编语言和高级语言(3)n汇编语言本质上就是机器语言 可以直接、有效地控制计算机硬件 易于产生速度快、容量小的高效率目标程序n高级语言不针对具体计算机系统 不易直接控制计算机的各种操作 目标程序比较庞大、运行速度较慢汇编语言:汇编语言: 高级语言:高级语言:11汇编语言和高级语言(4)n汇编语言的优点:直接控制计算机硬件部件可以编写在“时间”和“空间”两方面最有效的程序n汇编语言

6、的缺点:与处理器密切有关需要熟悉计算机硬件系统、考虑许多细节编写繁琐,调试、维护、交流和移植困难汇编语言:汇编语言:?高级语言:高级语言:?12汇编语言和高级语言(5)n汇编语言的优点使得它在程序设计中占有重要的位置,是不可被取代的n汇编语言的缺点使得人们主要采用高级语言进行程序开发工作n有时需要采用高级语言和汇编语言混合编程的方法,互相取长补短,更好地解决实际问题13汇编语言的应用场合n程序要具有较快的执行时间,或者只能占用较小的存储容量n程序与计算机硬件密切相关,程序要直接、有效地控制硬件n大型软件需要提高性能、优化处理的部分n没有合适的高级语言、或只能采用汇编语言的时候n分析具体系统尤其

7、是该系统的低层软件、加密解密软件、分析和防治计算机病毒等等 汇编语言的作用实在不小汇编语言的作用实在不小 !143.1.2 3.1.2 机器指令的编码格式机器指令的编码格式一、单字节指令一、单字节指令 1 1、8 8位编码仅为操作码位编码仅为操作码: 如:如:INC A 该指令的编码为:该指令的编码为:0000 0100B,其十六进制,其十六进制表示为表示为04H,累加器,累加器A隐含在操作码中。指令的隐含在操作码中。指令的功能是累加器功能是累加器A的内容加的内容加1。 注意:在指令中用注意:在指令中用“A”表示累加器,而用表示累加器,而用“ACC”表示累加器对应的地址(表示累加器对应的地址(

8、E0H)。)。 1528位编码含有操作码和寄存器编码位编码含有操作码和寄存器编码高高5位位为操作码,为操作码,低低3位位为存放操作数的寄存器为存放操作数的寄存器编码。如:编码。如:MOV A,R0 编码编码为为1110 1000B,其十六进制表示为,其十六进制表示为E8H(低(低3位位000为寄存器为寄存器R0的编码)。的编码)。功能功能是将当前是将当前工作寄存器工作寄存器R0中的数据传送到累加器中的数据传送到累加器A中。中。 16二、双字节指令二、双字节指令 第一字节第一字节表示操作码,表示操作码,第二个字节第二个字节表示参与表示参与操作的数据或数据存放的地址。操作的数据或数据存放的地址。如

9、:如:MOV A,#50H 编码编码为为0111 0100B,0101 0000B。其十。其十六进制表示为六进制表示为74H,50H。功能功能是将立即数是将立即数“50H”传送到累加器传送到累加器A中。中。 17三、三字节指令三、三字节指令 指令的第一字节指令的第一字节表示该指令的操作码,表示该指令的操作码,后后两个字节两个字节表示参与操作的数据或数据存放的地表示参与操作的数据或数据存放的地址。如:址。如:MOV 20HMOV 20H,#50H#50H 编码编码为为0111 0101B0111 0101B,0010 0000B0010 0000B,0101 0101 0000B0000B。其十

10、六进制表示为。其十六进制表示为75H75H,20H20H,50H50H。功功能能是将立即数是将立即数“50H”50H”传送到内部传送到内部RAM RAM 的的20H20H单单元中元中。183.1.2 3.1.2 符号指令的格式符号指令的格式一般格式为: 操作助记符操作助记符 目的操作数目的操作数,源操作数,源操作数;注释;注释 多数指令为两操作数指令多数指令为两操作数指令;当指令操作数隐;当指令操作数隐含在操作助记符中时,在形式上这种指令含在操作助记符中时,在形式上这种指令无操无操作数作数;另有一些指令为;另有一些指令为单操作数单操作数指令或指令或三操作三操作数数指令。指令的一般格式中使用了可

11、选择符号指令。指令的一般格式中使用了可选择符号“ ”,包含的内容因指令的不同可以有或无。,包含的内容因指令的不同可以有或无。 在在两个操作数的指令中,通常目的操作数写两个操作数的指令中,通常目的操作数写在左边,源操作数写在右边在左边,源操作数写在右边。 19 如:指令如:指令ANL A,40H 功能功能是将立即数是将立即数“40H”同累加器同累加器A中的数进中的数进行行“与与”操作,结果送回累加器。操作,结果送回累加器。 ANL为为“与与”操作的助记符,立即数操作的助记符,立即数“40H”为源操作数,累加器为源操作数,累加器A为目的操作数。为目的操作数。 注:在指令中,多数情况下累加器用注:在

12、指令中,多数情况下累加器用“A”表表示,仅在直接寻址方式中,用示,仅在直接寻址方式中,用“ACC”表示累加表示累加器在器在SFR区的具体地址区的具体地址E0H。 试比较,指令试比较,指令MOV A,30H的机器码为的机器码为74H、30H;而指令;而指令MOV ACC,30H的机器的机器码为码为75H、E0H、30H。203.1.3 3.1.3 符号指令及其注释中常用的符号符号指令及其注释中常用的符号Rn(n=07)-当前选中的工作寄存器组中的寄当前选中的工作寄存器组中的寄 存器存器R0R7之一;之一;Ri(i=0,1)-当前选中的工作寄存器组中的寄当前选中的工作寄存器组中的寄存器存器R0或或

13、R1; -间接寻址中地址寄存器前缀;间接寻址中地址寄存器前缀;#data -8位立即数;位立即数;#data16-16位立即数;位立即数;direct-片内低片内低128个个RAM单元地址及单元地址及SFR地址(可用符号名称表示);地址(可用符号名称表示);21addr11-11位目的地址;位目的地址;addr16-16位目的地址;位目的地址;rel-补码形式表示的补码形式表示的8位地址偏移量,值在位地址偏移量,值在128127范围内;范围内;bit-片内片内RAM位地址、位地址、SFR的位地址(可用的位地址(可用符号名称表示);符号名称表示);/-位操作数的取反操作前缀;位操作数的取反操作前

14、缀;()- 表示表示 地址单元或寄存器中的内容;地址单元或寄存器中的内容;()-表示以表示以 单元或寄存器内容为地址间单元或寄存器内容为地址间接寻址单元的内容;接寻址单元的内容; -将箭头右边的内容送入箭头左边的单元将箭头右边的内容送入箭头左边的单元中。中。223.2 80C51的寻址方式的寻址方式n寻址方式是寻找操作数或指令的地址的方式寻址方式是寻找操作数或指令的地址的方式。 寻址方式包含两方面内容:一是操作数的寻址,二寻址方式包含两方面内容:一是操作数的寻址,二是指令地址的寻址(如转移指令、调用指令)。是指令地址的寻址(如转移指令、调用指令)。n80C51的的寻址方式有七种寻址方式有七种。

15、即:寄存器寻址、直接。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址变址寻址、寻址、寄存器间接寻址、立即寻址、基址变址寻址、相对寻址和位寻址。相对寻址和位寻址。 对于两操作数指令,源操作数有寻址方式,目的操对于两操作数指令,源操作数有寻址方式,目的操作数也有寻址方式。若不特别声明,我们后面提到作数也有寻址方式。若不特别声明,我们后面提到的寻址方式均指的寻址方式均指源操作数的寻址源操作数的寻址方式。方式。2324 要操作的数据存放在寄存器中,指令中直接给出该寄存器要操作的数据存放在寄存器中,指令中直接给出该寄存器名称的寻址方式称为名称的寻址方式称为。采用寄存器寻址可以获得采用寄存器寻址

16、可以获得较高的传送和运算速度。较高的传送和运算速度。 寄存器可以是:寄存器可以是:R0R7;累加器;累加器A(注:使用符号(注:使用符号ACC表表示累加器时属于直接寻址);寄存器示累加器时属于直接寻址);寄存器B(以(以AB寄存器对形式寄存器对形式出现);数据指针出现);数据指针DPTR。3.2.1 3.2.1 寄存器寻址寄存器寻址如:MOV A,R0 25 指令操作码之后的字节存放的是操作数的地址,要指令操作码之后的字节存放的是操作数的地址,要操操作的数据存放在该地址指示的存储单元中作的数据存放在该地址指示的存储单元中的寻址方式称为的寻址方式称为。 在直接寻址方式中的在直接寻址方式中的SFR

17、经常采用符号形式表示。经常采用符号形式表示。寻址空间为寻址空间为:片内:片内RAM低低128字节(以地址形式表示);字节(以地址形式表示);SFR (以地址或(以地址或SFR的符号形式表示的符号形式表示 )。)。3.2.2 3.2.2 直接寻址直接寻址如:MOV A,50H 26 寄存器中的内容为地址,由该地址去取要操作寄存器中的内容为地址,由该地址去取要操作的数据的数据的寻址方式称为的寻址方式称为 。 寄存器间接寄存器间接寻址的存储空间寻址的存储空间为片内为片内RAM或片外或片外RAM。n 片内片内RAM的数据传送采用的数据传送采用“MOV”类指令,间接寻址寄类指令,间接寻址寄存器采用寄存器

18、存器采用寄存器R0或或R1(堆栈操作时采用(堆栈操作时采用SP)。)。n 片外片外RAM的数据传送采用的数据传送采用“MOVX”类指令,这时间接类指令,这时间接寻址寄存器有两种选择,一是采用寻址寄存器有两种选择,一是采用R0和和R1作间址寄存器,作间址寄存器,这时这时R0或或R1提供低提供低8位地址(外部位地址(外部RAM多于多于256字节采用字节采用页面方式访问时,可由页面方式访问时,可由P2口未使用的口未使用的I/O引脚提供高位地引脚提供高位地址);二是采用址);二是采用DPTR作为间址寄存器。作为间址寄存器。 3.2.3 3.2.3 寄存器间接寻址寄存器间接寻址27寄存器间接寻址对应的空

19、间为:寄存器间接寻址对应的空间为:n片内片内RAM(采用(采用R0,R1或或SP););n片外片外RAM(采用(采用R0,R1或或DPTR)。)。 如:MOV A,R0 28 指令编码中直接给出要操作数据指令编码中直接给出要操作数据的寻址方式称为的寻址方式称为。在这种寻址方式中,紧跟在操作码之后的操作数称。在这种寻址方式中,紧跟在操作码之后的操作数称为为立即数立即数。立即数可以为一个字节,也可以是两个字节,。立即数可以为一个字节,也可以是两个字节,并要用符号并要用符号“”来标识。由于立即数是一个常数,所以来标识。由于立即数是一个常数,所以只能作为源操作数。只能作为源操作数。 立即寻址所对应的立

20、即寻址所对应的寻址空间寻址空间为:为:ROM 3.2.4 3.2.4 立即寻址立即寻址如:MOV A,50H 29 以一个基地址加上一个偏移量地址形成要操作数据地址以一个基地址加上一个偏移量地址形成要操作数据地址的寻址方式称为的寻址方式称为。在这种寻址方式中,以数。在这种寻址方式中,以数据指针据指针DPTR或程序计数器或程序计数器PC作为基址寄存器,累加器作为基址寄存器,累加器A作为偏移量寄存器,基址寄存器的内容与偏移量寄存器的作为偏移量寄存器,基址寄存器的内容与偏移量寄存器的内容之和作为操作数地址。内容之和作为操作数地址。 变址寻址所对应的变址寻址所对应的寻址空间寻址空间为:为:ROM3.2

21、.5 3.2.5 基址变址寻址基址变址寻址如:MOVC A,A+DPTR 30 相对寻址是以程序计数器相对寻址是以程序计数器PC的当前值的当前值(指读出(指读出该该2字节或字节或3字节的跳转指令后,字节的跳转指令后,PC指向的下条指指向的下条指令的地址【令的地址【PC当当、PC本本】)】)为基准,加上指令中给为基准,加上指令中给出的相对偏移量出的相对偏移量 rel 形成目标地址形成目标地址的寻址方式的寻址方式 。 rel 是一个带符号的是一个带符号的8位二进制数,取值范围是位二进制数,取值范围是128127,以补码形式置于操作码之后存放。,以补码形式置于操作码之后存放。 3.2.6 3.2.6

22、 相对寻址相对寻址如:JC rel ; rel75H00HPSWSFR10000000ROMRAM1000H+02H=1002H1077HJC rel40H75H1000H1001H1002H1002H+75H=1077HPC当PC当偏移量 新PC值注意: 此例中CY(PSW.7)为1PC本31 由位地址来寻找要操作的数据由位地址来寻找要操作的数据的寻址方式称为的寻址方式称为。采用位寻址指令的操作数是。采用位寻址指令的操作数是8位二进制数位二进制数中的某一位。指令中给出的是位地址。位寻址方中的某一位。指令中给出的是位地址。位寻址方式实质属于位的直接寻址。式实质属于位的直接寻址。 寻址空间寻址空

23、间为:片内为:片内RAM的的20H2FH单元中的单元中的128可寻址位;可寻址位;SFR的可寻址位。的可寻址位。 习惯上,特殊功能寄存器的寻址位常用符号位习惯上,特殊功能寄存器的寻址位常用符号位地址表示。地址表示。 如:如: CLR PSW.7 CLR CCLR CY3.2.7 3.2.7 位寻址位寻址323.3 数据传送类指令(数据传送类指令(29条)条)n传送类指令占有较大的比重。数据传送是传送类指令占有较大的比重。数据传送是进行数据处理的最基本的操作,这类指令进行数据处理的最基本的操作,这类指令一般一般不影响标志寄存器不影响标志寄存器PSW的状态的状态。n传送类指令可以分成两大类。一是采

24、用传送类指令可以分成两大类。一是采用MOV操作符,称为一般传送指令;二是采操作符,称为一般传送指令;二是采用非用非MOV操作符,称为特殊传送指令,如:操作符,称为特殊传送指令,如:MOVC、MOVX、PUSH、POP、XCH、XCHD及及SWAP。 333.3.1 3.3.1 一般传一般传送指令送指令34一、一、16位传送位传送 这条指令的功能是将源操作数这条指令的功能是将源操作数data16(通常是地址常数)送入目的操作数(通常是地址常数)送入目的操作数DPTR中。中。源操作数的寻址方式为立即寻址。源操作数的寻址方式为立即寻址。例如:例如: 执行指令执行指令 MOV DPTR,#1234H

25、后后 (DPH)=12H,(,(DPL)=34H。35二、二、8位传送位传送n1源操作数指定的存储单元称为源字节;源操作数指定的存储单元称为源字节;n2目的操作数指定的存储单元称为目的字节;目的操作数指定的存储单元称为目的字节;在在5种源操作数中,只有种源操作数中,只有data不能用作目的操作不能用作目的操作数。所以可以用数。所以可以用4种目的操作数为基础构造种目的操作数为基础构造4类指类指令。相应的源操作数与目的操作数搭配依据如图:令。相应的源操作数与目的操作数搭配依据如图: A A Rn RnMOV direct , direct Ri Ri - #data目的操作数源操作数36Direc

26、tA A#dataRnRi1.通常源操作数与目的操作数寻址方式不相同(除通常源操作数与目的操作数寻址方式不相同(除direct外);外);2.寄存器寻址与寄存器间接寻址互不相通数据;寄存器寻址与寄存器间接寻址互不相通数据;371以以A为目的为目的 Rn ARn direct AdirectMOV A Ri ARi #data Adata ;();(),;();n这组指令的功能是把源字节的内容送入累加器这组指令的功能是把源字节的内容送入累加器中。源字节的寻址方式分别为直接寻址、寄存器中。源字节的寻址方式分别为直接寻址、寄存器间接寻址、寄存器寻址和立即寻址四种基本寻址间接寻址、寄存器寻址和立即寻址

27、四种基本寻址方式。方式。例:若(例:若(R1)= 20H,(,(20H)= 55H,执行指,执行指令令 MOV A,R1 后,(后,(A)= 55H。382以以Rn 为目的为目的 n这组指令的功能是把源字节的内容送入寄存器这组指令的功能是把源字节的内容送入寄存器Rn中。源字节的寻址方式分别为立即寻址、直接中。源字节的寻址方式分别为立即寻址、直接寻址和寄存器寻址(由于目的字节为工作寄存器,寻址和寄存器寻址(由于目的字节为工作寄存器,所以源字节不能是工作寄存器及其间址方式寻所以源字节不能是工作寄存器及其间址方式寻址)。址)。例:若(例:若(50H)= 40H,执行指令,执行指令 MOV R6,50

28、H 后,(后,(R6)= 40H。 A RnAMOV Rn direct Rndirect #data Rndata;( ),;();393以以direct 为目的为目的 n这组指令的功能是把源字节的内容送入这组指令的功能是把源字节的内容送入direct中。源字节的寻址方式分别为立即寻址、直接中。源字节的寻址方式分别为立即寻址、直接寻址、寄存器间接寻址和寄存器寻址。寻址、寄存器间接寻址和寄存器寻址。 例:若(例:若(R1)=50H,(50H)=18H,执行指令,执行指令MOV 40H,R1 后后,(40H)=18H。 A directA Rn directRnMOV direct direct

29、1 directdirect1 Ri directRi #data directdata;();(),;();();404以以Ri为目的为目的 n这组指令的功能是把源字节的内容送入这组指令的功能是把源字节的内容送入Ri内容内容为地址的单元,源字节寻址方式为立即寻址、直为地址的单元,源字节寻址方式为立即寻址、直接寻址和寄存器寻址(因目的字节采用寄存器间接寻址和寄存器寻址(因目的字节采用寄存器间接寻址,故源字节不能是寄存器寻址及寄存器间接寻址,故源字节不能是寄存器寻址及寄存器间接寻址)。接寻址)。例:若(例:若(R1)=30H,(,(A)=20H,执行指令,执行指令 MOV R1,A 后,(后,(

30、30H)=20H。 A RiAMOV Ri direct Ridirect #data Ridata;()( ),;()();()41Mov指令对PSW的影响nMOV指令一般不影响标志寄存器指令一般不影响标志寄存器PSW的状态。的状态。n如果如果MOV指令的目的操作数与累加器(指令的目的操作数与累加器(A、ACC及累加器位地址)有关则指令执行后对及累加器位地址)有关则指令执行后对PSW中的中的P位有影响。位有影响。P位的数据由奇奇偶偶位的数据由奇奇偶偶规则判定。规则判定。42例3.1 已知相应单元的内容,请指出每条指令执行后相应单元内容的变化。累加器A40H寄存器R050H内部RAM:40H3

31、0H内部RAM:50H10H MOV A,#20H MOV A,40H MOV A,R0 MOV A,R0解: MOV A,#20H 执行后A=20H MOV A,40H 执行后A=30H MOV A,R0 执行后A=50H MOV A,R0 执行后A=10H43例3.2 已知相应单元的内容,请指出下列指令执行后各单元内容相应的变化。寄存器R050H寄存器R166H寄存器R630H内部RAM:50H60H内部RAM:66H45H内部RAM:70H40H MOV A,R6 MOV R7,70H MOV 70H,50H MOV 40H,R0 MOV R1,#88H解: MOV A,R6执行后A=3

32、0H MOV R7,70H执行后R7=40H MOV 70H,50H执行后(70H)=60H MOV 40H,R0执行后(40H)=60H MOV R1,#88H执行后(66H)=88H443.3.2 3.3.2 特殊传送指令特殊传送指令特殊传送指令的助记符为:特殊传送指令的助记符为:MOVC、MOVX、PUSH、POP、XCH、XCHD和和 SWAP。功能分别为:功能分别为:ROM查表、外部查表、外部RAM读读写、堆栈操作和交换指令写、堆栈操作和交换指令 4546一、一、ROM查表查表 1DPTR内容为基址内容为基址 MOVC A,A+DPTR ;A (A)+(DPTR)该指令首先执行该指令

33、首先执行16位无符号数加法,将获得的基址与变址位无符号数加法,将获得的基址与变址之和作为之和作为16位的程序存储器地址,然后将该地址单元的内容传位的程序存储器地址,然后将该地址单元的内容传送到累加器送到累加器A。指令执行后。指令执行后DPTR的内容不变。的内容不变。2PC内容为基址内容为基址MOVC A,A+PC ;A (A)+(PC当)当)取出该单字节指令后取出该单字节指令后PC的内容增的内容增1,以增,以增1后的当前值去执后的当前值去执行行16位无符号数加法,将获得的基址与变址之和作为位无符号数加法,将获得的基址与变址之和作为16位的位的程序存储器地址。然后将该地址单元的内容传送到累加器程

34、序存储器地址。然后将该地址单元的内容传送到累加器A。指令执行后指令执行后PC的内容不变(的内容不变(PC当)。当)。注意:影响注意:影响PSW的的P位位47二、读写片外二、读写片外RAM 1读片外读片外RAM MOVX A,DPTR ;A (DPTR) MOVX A,Ri ;A (Ri)n 第一条指令以第一条指令以16位位DPTR为间址寄存器读片外为间址寄存器读片外RAM,可以,可以寻址整个寻址整个64K字节的片外字节的片外RAM空间。指令执行时,在空间。指令执行时,在DPH中中的高的高8位地址由位地址由P2口输出,在口输出,在DPL中的低中的低8位地址由位地址由P0口分时口分时输出,并由输出

35、,并由ALE信号锁存在地址锁存器中。信号锁存在地址锁存器中。n第二条指令以第二条指令以R0或或R1为间址寄存器,也可以读整个为间址寄存器,也可以读整个64K字字节的片外节的片外RAM空间。指令执行时,低空间。指令执行时,低8位地址在位地址在R0或或R1中由中由P0口分时输出,口分时输出,ALE信号将地址信息锁存在地址锁存器中信号将地址信息锁存在地址锁存器中(多于(多于256字节的访问,高位地址由字节的访问,高位地址由P2口提供)。口提供)。 读片外读片外RAM的的MOVX操作,使操作,使P3.7引脚输出的信号(引脚输出的信号(RD*)选通片外选通片外RAM单元,相应单元的数据从单元,相应单元的

36、数据从P0口读入累加器中。口读入累加器中。注意:影响PSW的P位482写片外写片外RAM MOVX DPTR,A ;(;(DPTR)(A) MOVX Ri,A ;(;(Ri)(A) 第一条指令以第一条指令以16位位DPTR为间址寄存器写外部为间址寄存器写外部RAM,可以,可以寻址整个寻址整个64K字节的片外字节的片外RAM空间。指令执行时,在空间。指令执行时,在DPH中高中高8位地址由位地址由P2口输出,在口输出,在DPL中的低中的低8位地址,由位地址,由P0口分时输出,口分时输出,并由并由ALE信号锁存在地址锁存器中。信号锁存在地址锁存器中。 第二条指令以第二条指令以R0或或R1为间址寄存器

37、,也可以写为间址寄存器,也可以写64K字节的字节的片外片外RAM空间。指令执行时,低空间。指令执行时,低8位地址在位地址在R0或或R1中由中由P0口分口分时输出,时输出,ALE信号将地址信息锁存在地址锁存器中(多于信号将地址信息锁存在地址锁存器中(多于256字字节的访问,应用节的访问,应用MOVX DPTR,A)。)。 写片外写片外RAM的的“MOVX”操作,使操作,使P3.6引脚的信号(引脚的信号(WR*)有效,累加器有效,累加器A的内容从的内容从P0口输出并写入选通的相应片外口输出并写入选通的相应片外RAM单元。单元。 注意:不影响PSW的任意一位49例3.3 把外部数据存储器2040H单

38、元中的数据传送到外部数据存储器2560H单元中去。解: MOV DPTR,#2040H MOVX A,DPTR;将2040H单元的内容传送到A中 MOV DPTR,#2560H MOVX DPTR,A;将A中的内容传送到2560H单元中50三、数据交换三、数据交换 对于单一的对于单一的MOV类指令,传送通常是单向的,即数据是从一类指令,传送通常是单向的,即数据是从一处(源)到另一处(目的)的拷贝。而交换类指令完成的传送处(源)到另一处(目的)的拷贝。而交换类指令完成的传送是双向的,是两字节间或两半字节间的双向交换是双向的,是两字节间或两半字节间的双向交换 。 1字节交换字节交换)();()()

39、;()();(,RiA Ri directA direct RnA Rn A XCH例:若(例:若(R0)=80H,(,(A)=20H。执行指令。执行指令 XCH A,R0 后,(后,(A)=80H,(,(R0)=20H。51 2半字节交换半字节交换 XCHD指令指令的功能是间址操作数的低半字节与的功能是间址操作数的低半字节与A的的低半字节内容互换。低半字节内容互换。 SWAP指令指令的功能是累加器的功能是累加器 的高低的高低4位互换。位互换。例:若(例:若(R0)30H,(,(30H)67H, (A)20H。执行指令。执行指令 XCHD A,R0 指令后,(指令后,(A)27H,(,(30H

40、)60H。 若(若(A)30H,执行指令,执行指令SWAP A后,(后,(A)03H。)();()();(,47A03A A SWAP03Ri03A Ri A XCHD52例3.4 设内部数据存储区2AH、2BH单元中连续存放有4个BCD码,试编写一程序把这4个BCD码倒序排序。即: 2AH 2BH 2AH 2BH a3 a2 a1 a0 a0 a1 a2 a3 解:MOV R0,#2AH;将立即数2AH传送到寄存器R0中 MOV A,R0;将2AH单元的内容传送到A中 SWAP A;将A中的高4位与低4位交换 MOV R0,A;将A的内容传送到2AH单元中 MOV R1,#2BH MOV A

41、,R1;将2BH单元的内容传送到A中 SWAP A;将A中的高4位与低4位交换 XCH A,R0;将A中的内容与2AH单元的内容交换 MOV R1,A;将A的内容传送到2BH单元53四、堆栈操作四、堆栈操作 堆栈是在内部堆栈是在内部RAM中按中按“后进先出后进先出”的规则组织的一片存储的规则组织的一片存储区。此区的一端固定,称为栈底;另一端是活动的,称为栈顶。区。此区的一端固定,称为栈底;另一端是活动的,称为栈顶。栈顶的位置(地址)由栈指针栈顶的位置(地址)由栈指针SP指示(即指示(即SP的内容是栈顶的地的内容是栈顶的地址)。址)。在在80C51中,堆栈的生长方向是向上的(地址增大)。中,堆栈

42、的生长方向是向上的(地址增大)。 系统复位时,系统复位时,SP的内容为的内容为07H。通常用户应在系统初始化时。通常用户应在系统初始化时对对SP重新设置。重新设置。SP的值越小,堆栈的深度越深。的值越小,堆栈的深度越深。PUSH direct ;SP (SP) 1,(,(SP)(direct)POP direct ;direct(SP),),SP (SP)1 例:若(例:若(SP)=07H,(,(40H)=88H,执行指令,执行指令 PUSH 40H 后,(后,(SP)=08H,(,(08H)=88H。54注意:注意:(1)堆栈是用户自己设定的内部RAM中的一块专用存储区,使 用时一定先设堆栈

43、指针;堆栈指针缺省为SP=07H。(2)堆栈遵循后进先出的原则安排数据。(3)堆栈操作必须是字节操作,且只能直接寻址。将累加器A入 栈、出栈指令可以写成:PUSH/POP ACC 或 PUSH/POP 0E0H而不能写成: PUSH/POP A(4)堆栈通常用于临时保护数据及子程序调用时保护现场/恢复 现场。(5)以上指令结果不影响程序状态字寄存器PSW标志。 (除POP ACC)55例3.5 设堆栈指针为30H,把累加器A和DPTR中的内容压入,然后根据需要再把它们弹出,编写实现该功能的程序段。解: MOV SP,#30H;设置堆栈指针,SP=30H,为栈底地址 PUSH ACC;SP+1S

44、P,SP=31H,ACC (SP) PUSH DPH;SP+1SP,SP=32H,DPH (SP) PUSH DPL;SP+1SP,SP=33H,DPL (SP) POP DPL;(SP)DPL,SP-1SP,SP=32H POP DPH;(SP)DPH,SP-1SP,SP=31H POP ACC;(SP)ACC,SP-1SP,SP=30H563.4 算术运算类指令(算术运算类指令(24条)条) 算术运算指令可以完成加、减、乘、除及自加算术运算指令可以完成加、减、乘、除及自加1和自减和自减1等运算。这类指令多数以等运算。这类指令多数以A为目的操作数。为目的操作数。 5758 进位(借位)标志进

45、位(借位)标志CY为无符号整数的多字节加为无符号整数的多字节加法、减法、移位等操作提供了方便;法、减法、移位等操作提供了方便;溢出标志溢出标志OV可方便的控制补码运算;可方便的控制补码运算;辅助进位标志辅助进位标志AC用于用于BCD码运算。算术运算操作将影响码运算。算术运算操作将影响PSW中的中的OV、CY、AC和和P等。等。 59 3.4.1 3.4.1 加法加法一、不带进位加一、不带进位加 Rn AARn direct AAdirectADD A Ri AARi #data AAdata ;( ) ();( ) (),;( ) ();( )CY:和的:和的D7位有进位时,(位有进位时,(C

46、Y)=1;否则,(;否则,(CY)=0。AC:和的:和的D3位有进位时,(位有进位时,(AC)=1;否则,(;否则,(AC)=0。OV:和的:和的D7、D6位只有一个有进位时,(位只有一个有进位时,(OV)=1;溢出表示运算的结;溢出表示运算的结果超出了数值所允许的范围。果超出了数值所允许的范围。如:两个正数相加结果为负数或两个负数相如:两个正数相加结果为负数或两个负数相加结果为正数时属于错误结果,此时(加结果为正数时属于错误结果,此时(OV)=1。P:累加器:累加器ACC中中“1”的个数为奇数时,(的个数为奇数时,(P)=1;为偶数时,(;为偶数时,(P)=0。 60例例 若(若(A)=84

47、H,(,(30H)=8DH,执行指令,执行指令 ADD A,30H 之后,由于:之后,由于: 即:(即:(A)=11H,(,(CY)=1,(,(AC)=1,(OV)=1(D7有进位,有进位,D6无进位),(无进位),(P)=0。 61二、带进位加二、带进位加 Rn AARnCY direct AAdirectCYADDC A Ri AARiCY #data AAdata CY;( ) () ();( ) () (),;( ) () ();( )()指令的指令的功能功能是把源操作数与累加器是把源操作数与累加器A的内容相加的内容相加再与进位标志再与进位标志CY的值相加,结果送入目的操作数的值相加,

48、结果送入目的操作数A中。中。加的进位标志加的进位标志CY的值的值是在该指令执行之前已经是在该指令执行之前已经存在的进位标志的值,而不是执行该指令过程中产存在的进位标志的值,而不是执行该指令过程中产生的进位生的进位 。62三、增三、增1 11DPTRDPTR DPTR 1RiRi Ri 1directdirect direct 1RnRn Rn 1AA A INC)(;)();()(;)(;)(;指令的指令的功能功能是把源操作数的内容加是把源操作数的内容加 1 ,结,结果再送回原单元。这些指令仅果再送回原单元。这些指令仅 INC A 影响影响P标标志。其余指令都不影响标志位的状态。志。其余指令都

49、不影响标志位的状态。 63例3.6 编写计算12A4H+0FE7H的程序,将结果存入内部RAM 41H和40H单元,40H存低8位,41H存高8位。解:MOV A,#0A4H;被加数低8位AADD A,#0E7H ;加数低8位E7H与之相加,A=8BH,Cy=1MOV 40H,A;A(40H),存低8位结果MOV A,#12H ;被加数高8位AADDCA,#0FH;加数高8位+A+Cy,A=22HMOV 41H,A;存高8位运算结果64四、十进制调整四、十进制调整DA A n指令的功能是对累加器指令的功能是对累加器A中刚进行的两个中刚进行的两个BCD码的加法的结码的加法的结果进行十进制调整。果

50、进行十进制调整。n两个压缩的两个压缩的BCD码按二进制相加后,必须经过调整方能得码按二进制相加后,必须经过调整方能得到正确的压缩到正确的压缩BCD码的和。码的和。 调整要执行的操作是:调整要执行的操作是:(1)当累加器)当累加器A中的中的低低4位位数出现了非数出现了非BCD码(码(10101111)或低或低4位产生进位(位产生进位(AC=1),则应在低),则应在低4位加位加6调整,以产生调整,以产生低低4位正确的位正确的BCD结果。结果。(2)当累加器)当累加器A中的中的高高4位位数出现了非数出现了非BCD码(码(10101111)或高或高4位产生进位(位产生进位(CY=1),则应在高),则应

51、在高4位加位加6调整,以产生调整,以产生高高4位正确的位正确的BCD结果。结果。十进制调整指令执行后,十进制调整指令执行后,PSW中的中的CY表示结果的百位值,表示结果的百位值,对对OV位无影响。位无影响。 65例例 若(若(A)0101 0110B,表示的,表示的BCD码为码为56,(,(R2)0110 0111B,表示的,表示的BCD码为码为67,(,(CY)0。执行以下指。执行以下指令:令:ADD A,R2DA A由于(由于(A)0010 0011B,即,且(,即,且(CY)1,即,即结果为结果为BCD数数123。应该注意,应该注意,DA指令不能对减法进行十进制调整。指令不能对减法进行十

52、进制调整。 66例3.7 说明下列指令的执行结果。解:MOV A,#05HADD A,#08H DA A ;05HA;05H+08HA,A=0DH;自动调整为BCD码,A=13H673.4.2 3.4.2 减法减法一、带借位减一、带借位减CY:被减数的:被减数的D7位需借位时,(位需借位时,(CY)=1;否则,(;否则,(CY)=0.AC:被减数的:被减数的D3位需借位时,(位需借位时,(AC)=1;否则,(;否则,(AC)=0.OV:若被减数:若被减数D6位有借位而位有借位而D7位无借位或位无借位或D7位有借位而位有借位而D6位位无借位时,(无借位时,(OV)=1。即减法错(。即减法错(OV

53、)1如要用此组指令完成不带借位减法,只需先清如要用此组指令完成不带借位减法,只需先清CY为为 0。 Rn AARnCY direct AAdirectCYSUBB A Ri AARiCY #data AAdata CY;( ) () ();( ) () (),;( ) () ();( )()68例例 若(若(A)=C9H,(,(R2)=54H,(,(CY)=1,执行指令执行指令 SUBB A,R2 之后,由于:之后,由于: 即:(即:(A)=74H,(,(CY)=0,(,(AC)=0,(OV)=1(位(位6有借位,位有借位,位7无借位),(无借位),(P)=0。 69二、减二、减1n这组指令的

54、功能是把操作数的内容减这组指令的功能是把操作数的内容减 1 ,结,结果再送回原单元。果再送回原单元。n这组指令仅这组指令仅 DEC A 影响影响P标志。其余指令都标志。其余指令都不影响标志位的状态。不影响标志位的状态。1RiRi Ri 1directdirect direct 1RnRn Rn 1AA A DEC)();()(;)(;)(;70例3.8 分别指出指令INC R0和INC R0的执行结果。设(R0)=30H,(30H)=00H。解: INC R0 INC R0;(R0)+1=30H+1=31HR0,(R0)=31H;(R0)+1=(30H)+130H, (30H)=01H,R0中

55、内容不变71综合应用举例分析(单片机复位)CLR CMOV R0,#30HMOV R1,#31HMOV 30H,#75HMOV 31H,#0F6HMOV A,#09HADD A,R0SUBB A,R1ADD A,R1DEC R1(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)=

56、(P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=72综合应用举例分析CLR CMOV R0,#30HMOV R1,#31HMOV 30H,#75HMOV 31H,#0F6HMOV A,#09HADD A,R0SUBB A,R1ADD A,R1DEC R1(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (

57、P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= 39H(CY)=0(AC)=0(P)=0(OV)=0(MD)=08H(CY)=0(AC)=0(P)=1(OV)=0(MD)=FEH(CY)=0(AC)=0(P)=1(OV)=0(MD)=30H(CY)=0(AC)=0(P)=1(OV)=073SUBB A,R1ADDC A,31HSUBB A,#31HMOV R0,AMOV R0,30HINC R0ADD A,R0DA A(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (A

58、C)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=(MD)= (CY)= (AC)= (P)= (OV)=74SUBB A,R1ADDC A,31HSUBB A,#31HMOV R0,AMOV R0,30HINC R0ADD A,R0DA A(MD)=89H(CY)=0(AC)=0(P)=1(OV)=0(MD)=7FH(CY)=1(AC)=

59、0(P)=1(OV)=1(MD)=4DH(CY)=0(AC)=0(P)=0(OV)=0(MD)=4DH(CY)=0(AC)=0(P)=0(OV)=0(MD)=75H(CY)=0(AC)=0(P)=0(OV)=0(MD)=76H(CY)=0(AC)=0(P)=0(OV)=0(MD)=C3H(CY)=0(AC)=1(P)=0(OV)=1(MD)=29H(CY)=1(AC)=1(P)=1(OV)=1753.4.3 3.4.3 乘法乘法(multiplication) MUL AB ;累加器;累加器A与与B寄存器相乘寄存器相乘 该指令的该指令的功能功能是将累加器是将累加器A与寄存器与寄存器B中的无中的

60、无符号符号8位二进制数相乘位二进制数相乘 ,乘积的低,乘积的低8位留在累加器位留在累加器A中,高中,高8位存放在寄存器位存放在寄存器B中。中。n当乘积大于当乘积大于FFH时,溢出标志位(时,溢出标志位(OV)=1。而。而标志标志CY总是被清总是被清0。 例例 若(若(A)=50H,(,(B)=A0H,执行指令,执行指令 MUL AB 之后之后?(A)=00H,(,(B)=32H,(,(OV)=1,(,(CY)=0763.4.4 3.4.4 除法除法( (division) DIV AB ;累加器;累加器A除以寄存器除以寄存器B 该指令的该指令的功能功能是将累加器是将累加器A中的无符号中的无符号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论