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

下载本文档

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

文档简介

第2章51单片机的指令系统

学习和使用单片机的一个重要环节就是理解和熟练掌握它的指令系统。单片机的指令系统是生产厂商定义的,对于不同内核的单片机,其指令系统也是不同的。本章将详细介绍51单片机指令系统的寻址方式及各类指令的格式和功能。

2.1初识单片机的汇编指令2.251单片机指令的寻址方式2.380C51指令集2.451单片机汇编语言程序设计示例习题

第2章51单片机的指令系统

学习和使用单片机的一个重要12.1初识单片机的汇编指令2.1.1案例介绍及知识要点2.1.2程序示例2.1.3知识总结——指令格式2.1.4知识总结——指令类型2.1.5知识总结——常用符号说明2.1初识单片机的汇编指令2.1.1案例介绍及知识要22.1.1案例介绍及知识要点将内部RAM中20H单元和30H单元的无符号数相加,结果存入R0(高位)和R1(低位)中。了解单片机的指令格式。了解单片机的指令类型。熟悉指令中常用的符号。2.1.1案例介绍及知识要点将内部RAM中20H单元和332.1.2程序示例2.1.2程序示例42.1.3知识总结——指令格式指令的表示方法就是指令格式。51单片机指令主要由操作码助记符字段和操作数字段组成。指令格式如下:

[标号:]操作码助记符[操作数1,][操作数2,][操作数3,][;注释]指令格式中各项的含义说明如下。[]:括号中的内容是可选的,其包含的内容因指令的不同可有可无。标号:根据编程需要给指令设定的符号地址,可有可无;通常在子程序入口或转移指令的目标地址处才赋予标号。标号由1~8个字符组成,第一个字符必须是英文字母,不能是数字或其他符号,标号后必须有冒号。操作码助记符:是指令的核心部分,由2~5个英文字母组成,如JB、MOV、CJNE或LCALL等。用于指示执行何种操作,如加、减、乘、除和传送等。操作数:表示指令操作的对象,可以是一个具体的数据,也可以是参加运算的数据所在的地址。操作数一般有以下几种形式。没有操作数:操作数隐含在操作码中,如RET指令。只有一个操作数:如INCA指令。有两个操作数:如MOVA,30H指令,操作数之间以逗号相隔。有3个操作数:如CJNEA,#00H,LOOP指令。注释:对指令的解释说明,用以提高程序的可读性,注释前必须加分号,注释换行时行前也要加分号。2.1.3知识总结——指令格式指令的表示方法就是指令格式52.1.4知识总结——指令类型80C51汇编语言有42种操作码助记符(见附录A),用来描述33种操作功能。一种操作码可以使用一种以上的数据类型。由于助记符规定了其访问的存储器空间,所以一种功能可能有几个助记符,如MOV、MOVX、MOVC。功能助记符与寻址方式组合可得到111条指令。按机器指令所占字节数分类,共有单字节指令(49条)、双字节指令(45条)和三字节指令(17条)。按指令执行时间分类,共有单周期指令(64条)、双周期指令(45条)和四周期指令(两条,乘/除)。按功能分类,80C51指令系统可分为:数据传送指令(29条)、算术运算指令(24条)、逻辑运算指令(24条)、位操作指令(17条)、控制转移指令(17条)。2.1.4知识总结——指令类型80C51汇编语言有42种62.1.5知识总结——常用符号说明2.1.5知识总结——常用符号说明72.251单片机指令的寻址方式在指令系统中,操作数是指令的重要组成部分,它指定了参加运算的数据或数据所在的地址单元。寻找源操作数地址的方式称为寻址方式。一条指令采用什么样的寻址方式是由指令的功能决定的。寻址方式越多,指令功能就越强,灵活性就越大。只有透彻地理解寻址方式,才能正确应用指令。2.2.1案例介绍及知识要点2.2.2程序示例2.2.3知识总结——直接寻址2.2.4知识总结——立即寻址2.2.5知识总结——寄存器寻址2.2.6知识总结——寄存器间接寻址2.2.7知识总结——变址寻址2.2.8知识总结——位寻址2.2.9知识总结——相对寻址2.251单片机指令的寻址方式在指令系统中,操作数是指令82.2.1案例介绍及知识要点编写多字节无符号数加法程序。设有两个多字节无符号数分别存放在内部RAM的DAT1和DAT2开始的区域中(低字节先存),字节个数存放在R2中,求它们的和,并将结果存放在DAT1开始的区域中。掌握单片机指令中几种常用的寻址方式。明确各寻址方式的寻址范围。

2.2.1案例介绍及知识要点编写多字节无符号数加法程序。92.2.2程序示例51单片机指令操作数的寻址方式主要有7种方式,分别为直接寻址、立即寻址、寄存器寻址、寄存器间接寻址、变址、寻址、位寻址、相对等址,其中,上述程序中涉及立即寻址、寄存器寻址、寄存器间接寻址、位寻址和相对寻址5种寻址方式。下面将详细介绍这7种寻址方式。

2.2.2程序示例51单片机指令操作数的寻址方式主要有7102.2.3知识总结——直接寻址直接寻址方式是指指令中含有操作数的地址,该地址指出了参与运算或传送的数据所在的字节单元或位地址。(1) 低128B单元在指令中直接以单元地址形式给出。(2) 特殊功能寄存器除可以用单元地址形式给出外,还可以用寄存器符号形式给出。注意:直接寻址方式是访问特殊功能寄存器的唯一方法。2.2.3知识总结——直接寻址直接寻址方式是指指令中含有112.2.4知识总结——立即寻址立即寻址方式是指操作数在指令字节中给出,即操作数以指令字节的形式存放于程序存储器中,为了与直接寻址指令中的直接地址相区别,需要在操作数前面加前缀标志“#”。例如,执行指令: MOV A,#30H MOV DPTR,#8000H第1条指令表示将立即数30H送入累加器A中。第2条指令表示把16位立即数送入数据指针DPTR中,其中高8位送DPH,低8位送DPL。2.2.4知识总结——立即寻址立即寻址方式是指操作数在指122.2.5知识总结——寄存器寻址寄存器寻址方式是指由指令指出某一个寄存器的内容作为操作数的寻址方式。寄存器寻址一般用于访问选定的通用寄存器R0~R7。如果寄存器寻址方式使用了另一个操作数,那么该操作数必须是累加器A。寄存器寻址指令都是单字节指令(一条指令在程序存储器中占一个字节地址)。寄存器寻址的寻址范围如下。(1) 当前通用寄存器组。(2) 部分特殊功能寄存器。例如,累加器A、寄存器B和数据指针DPTR。2.2.5知识总结——寄存器寻址寄存器寻址方式是指由指令132.2.6知识总结——寄存器间接寻址寄存器间接寻址是指由指令指出某一个寄存器的内容作为操作数地址的寻址方式。寄存器的内容不是操作数,而是操作数所在的存储器地址,操作数是通过寄存器间接得到的。寄存器间接寻址需要以寄存器符号的形式表示,为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方式中,应在寄存器的名称前面加前缀标志“@”。访问内部RAM或外部数据存储器的低256个字节时,只能采用R0或R1作为间接寻址寄存器。寄存器间接寻址的寻址范围如下。(1) 片内RAM低128B单元:这里只能用R0和R1作为间接寻址寄存器。(2) 片外RAM64KB:使用DPTR作为间接寻址寄存器。(3) 片外RAM低256B单元:可以使用DPTR、R0和R1作为间接寻址寄存器。(4) 堆栈区:以堆栈指针SP作为间接寻址寄存器。2.2.6知识总结——寄存器间接寻址寄存器间接寻址是指由142.2.7知识总结——变址寻址变址寻址方式用于访问程序存储器中的数据表格,以程序计数器PC或数据指针DPTR作为基址寄存器,以累加器作为变址寄存器。基址寄存器和变址寄存器的内容相加形成16位地址,该地址即作为操作数的地址。2.2.7知识总结——变址寻址变址寻址方式用于访问程序存152.2.8知识总结——位寻址80C51单片机有位处理功能,可以对数据位进行操作,因此就有了相应的位寻址方式。位寻址指令中可以直接使用位地址。 位寻址的寻址范围如下。(1) 片内RAM中的位寻址区。(2) 可位寻址的特殊功能寄存器。2.2.8知识总结——位寻址80C51单片机有位处理功能162.2.9知识总结——相对寻址相对寻址用于访问程序存储器,只出现在转移指令中。以PC的当前值加上指令中给出的相对偏移量(rel)形成转移地址。其中,rel是一个带符号的8位二进制数,以补码形式置于操作码之后存放。程序的转移范围以PC当前值为中心,介于-128~+127之间。2.2.9知识总结——相对寻址相对寻址用于访问程序存储器172.380C51指令集根据指令功能的不同,51单片机指令通常分为数据传送类、算术运算、逻辑运算类、控制转移类和位操作类这5大类指令。熟练掌握数据传送类指令、控制转移类及位操作的应用。了解逻辑运算类和算术运算类指令,熟记其标志符。2.3.1数据传送类指令2.3.2算术运算指令2.3.3逻辑运算及移位类指令2.3.4控制转移类指令2.3.5位操作类指令2.380C51指令集根据指令功能的不同,51单片机指令182.3.1数据传送类指令51指令系统中,数据传送类指令共有29条。这类指令将源操作数传送到指定的目的地址,传送后源操作数保持不变。数据传送类指令可以在累加器A、R0~R7工作寄存器与片内数据存储器、片外数据存储器和程序存储器之间进行数据传送。数据传送类指令一般不影响标志位,只有堆栈操作可以直接修改程序状态字PSW。数据传送类指令汇编语句的格式为: MOV ﹤目的操作数﹥,﹤源操作数﹥1.内部数据的传送指令1) 以累加器A为目的操作数的指令2) 以寄存器Rn为目的操作数的指令3) 以直接地址为目的操作数的指令4) 以寄存器间接地址为目的操作数的指令5) 16位数据传送指令6) 堆栈操作指令PUSH、POP7) 字节交换指令8) 半字节交换指令2.累加器A与片外RAM或I/O接口的数据传送指令3.查表指令注意:由于80C51单片机堆栈操作指令中的操作数只能使用直接寻址方式,不能使用寄存器寻址方式,所以将累加器压入堆栈时,累加器(ACC)不能简写A。堆栈操作时指令PUSH和POP要成对出现,且遵循后进先出(LIFO)和先进后出(FILO)的原则。2.3.1数据传送类指令51指令系统中,数据传送类指令共192.3.2算术运算指令C51的算术运算指令有加、减、乘、除法指令,以及增量和减量指令。大多数指令都要以累加器A来存放一个源操作数,另一个源操作数可以存放于任何一个工作寄存器Rn或片内RAM单元中,也可以是指令码中的一个立即数。1.加法指令1)H不带进位的加法指令2)带进位的加法指令3)加1指令4)十进制调整指令2.减法指令3.乘法指令4.除法指令2.3.2算术运算指令C51的算术运算指令有加、减、乘、202.3.3逻辑运算及移位类指令逻辑运算指令可以完成数字逻辑的与、或、异或、清0和取反操作。移位类指令是对累加器A的循环移位操作,包括左、右方向,以及带与不带进位标志位的方式,此类指令共有24条。1.逻辑与指令ANL2.逻辑或指令ORL3.逻辑异或指令XRL4.清零和求反指令5.循环移位指令2.3.3逻辑运算及移位类指令逻辑运算指令可以完成数字逻212.3.4控制转移类指令控制转移类指令通常用于实现循环结构和分支结构,共有17条,包括无条件转移指令、条件转移指令、子程序调用及返回指令。1.无条件转移指令1)绝对转移指令2)相对转移指令3)间接转移指令2.条件转移指令1)判0或判1条件转移指令2)比较转移指令3)减1不为0转移指令3.子程序调用与返回指令1)长调用指令2)绝对调用指令3)子程序返回指令4)中断返回指令4.空操作指令2.3.4控制转移类指令控制转移类指令通常用于实现循环结222.3.5位操作类指令51单片机的一个显著有特点就是具有位操作功能。相应的位操作指令共有17条,主要分为4类,即位传送指令、位状态控制指令、位逻辑运算指令和位条件转移指令。进行位操作时,以进位标志位CY作为位累加器。位地址可用以下方式表示。直接用位地址表示方式,如20H、D4H。采用字节地址加位的方式表示,两者之间用“.”隔开,如20H.0。采用寄存器名称加位的方式,如ACC.0、PSW.7、88H.7。位名称方式,如EA、TR0。1.位传送指令2.位状态控制指令1) 位清02) 位置13.位逻辑运算指令1) 位逻辑“与”2) 位逻辑“或”3) 位取反4.位条件转移指令1) 判CY转移2) 判bit转移2.3.5位操作类指令51单片机的一个显著有特点就是具有232.451单片机汇编语言程序设计示例汇编语言程序共有3种基本结构形式,即顺序结构、分支结构和循环结构。本节将从应用的角度出发,介绍这3种程序结构及各种常用程序的设计方法,并列举一些具有代表性的汇编语言源程序,作为参考。了解汇编语言程序设计的设计步骤。掌握汇编语言中常用伪指令的写法及功能。理解汇编语言常见的程序结构。掌握子程序的调用方法。熟悉常用程序的编写方法。2.4.1设计步骤2.4.2伪指令2.4.3顺序程序设计2.4.4分支程序设计2.4.5循环程序设计2.4.6子程序设计2.451单片机汇编语言程序设计示例汇编语言程序共有3种242.4.1设计步骤1.分析问题,确定算法2.根据算法,画出程序流程图3.分配内存工作区及有关端口地址4.编写程序5.上机调试2.4.1设计步骤1.分析问题,确定算法252.4.2伪指令在用80C51单片机设计应用系统时,可通过汇编指令来编写程序。用汇编语言编写的程序称为汇编语言源程序。伪指令是放在汇编语言源程序中用于指示汇编程序如何对源程序进行汇编的指令,它不同于指令系统中的指令,指令系统中的指令在汇编程序汇编时能产生相应的指令代码,而伪指令在汇编程序汇编时不会产生代码,只是对汇编过程进行相应的控制和说明。伪指令通常在汇编语言源程序中用于定义数据、分配存储空间,以及控制程序的输入输出等。80C51相对于一般的微型计算机汇编语言源程序来说结构简单,伪指令数目少。常用的伪指令只有几条,如下。1.ORG定位伪指令2.汇编结束伪指令END3.赋值伪指令EQU4.数据地址赋值伪指令DATA5.字节数据定义伪指令DB6.字数据定义伪指令DW7.位地址符号定义伪指令BIT2.4.2伪指令在用80C51单片机设计应用系统时,可通262.4.3顺序程序设计顺序结构程序是一种最简单、最基本的程序,无分支,按照程序编写的顺序依次执行。一般用来处理比较简单的算术或逻辑问题,主要用数据传送类指令和数据运算类指令来实现。2.4.3顺序程序设计顺序结构程序是一种最简单、最基本的272.4.4分支程序设计在很多实际问题中,都需要根据不同的情况进行不同的处理,这就用到了分支程序结构。所谓分支结构就是利用条件转移指令,使程序执行某一指令后,根据所给的条件是否满足来改变程序执行的顺序。分支程序的结构有两种:双分支结构和多分支结构(散转分支结构),如图2-3所示。2.4.4分支程序设计在很多实际问题中,都需要根据不同的282.4.5循环程序设计循环程序是最常用的程序结构形式。在单片机的程序设计中,有时会遇到一段程序要重复执行多次的情况,此时就要用到循环结构程序,这有助于缩短程序,同时也节省了程序的存储空间,提高程序的质量。循环结构程序一般由4部分组成。(1) 初始化部分。主要用来设置循环的初始值,包括预置数、计数器和数据指针的初值。(2) 循环处理部分。此部分是循环程序的主题部分,也称为循环体,是重复执行的程序段,通过它可以完成程序处理的任务。(3) 循环修改。每循环一次,就要修改循环次数、数据及地址指针等。(4) 循环控制部分。根据循环结束条件,判断是否应该结束循环。循环程序设计的一个主要问题是循环次数的控制,一般有两种控制方式,其结构框图如图2-5所示。2.4.5循环程序设计循环程序是最常用的程序结构形式。在292.4.6子程序设计子程序是具有某种功能的独立程序段,从结构上看,它与一般程序没有多大区别,唯一的区别是在子程序的末尾有一条子程序返回指令(RET),其功能是当子程序执行完后能自动地返回到主程序中去。在编写和调用子程序时要注意以下几点。(1) 要给每个子程序赋一个名字,作为子程序入口的符号。(2) 明确入口条件和出口条件。入口条件表明子程序需要哪些参数,放在哪个寄存器和哪个存储单元;出口条件则表明子程序处理的结果是如何存放的。只有正确理解并运用这两个条件,才能完成子程序和主程序间数据的正确传递。(3) 保护现场和恢复现场。若在调用之前,主程序已经使用了某些存储单元或寄存器,在调用子程序时,这些寄存器或存储单元又有其他用途,就应先把这些单元或寄存器中的内容压入堆栈(使用压栈指令PUSH)进行保护,调用完子程序后再从堆栈中弹出(使用出栈指令POP),以便加以恢复。注意:在51单片机中,堆栈操作遵循“先入后出”的原则,因此,先压栈的参数应该后弹出,才能保证恢复原来的数据。如果有较多的寄存器要保护,应使主程序和子程序使用不同的寄存器组。(4) 在子程序中可包含对另外子程序的调用,称为子程序嵌套。(5) 若存在子程序调用,则需要在主程序中正确地设置堆栈指针。2.4.6子程序设计子程序是具有某种功能的独立程序段,从30习题1.51单片机的指令系统包括多少条指令?按字节划分为几种?按执行时间如何划分?按功能如何划分?2.列举51单片机的几种寻址方式。3.列举访问外部数据存储器的几种方法。4.列举访问程序存储器的几种指令,并理解各个指令的用法。5.列举51单片机汇编程序中常用的几个伪指令,并说明其含义。6.现有两个双字节无符号数,分别存放在R3R4和R5R6中,高字节在前,低字节在后。编写程序使两数相加,结果存放在20H21H22H单元。7.编写程序,将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。8.将一个单字节十六进制数转成BCD码。9.求1、2、3、…、N之和,N<256。10.编写程序,将片外数据存储器中20H单元的内容相乘,并将结果存放在22H和23H单元中,高位存放高地址中。11.请将片外数据存储器地址40H~60H区域的数据块,全部搬到片内RAM相同地址区域,并将原数据区域全添FFH。习题1.51单片机的指令系统包括多少条指令?按字节31第2章51单片机的指令系统

学习和使用单片机的一个重要环节就是理解和熟练掌握它的指令系统。单片机的指令系统是生产厂商定义的,对于不同内核的单片机,其指令系统也是不同的。本章将详细介绍51单片机指令系统的寻址方式及各类指令的格式和功能。

2.1初识单片机的汇编指令2.251单片机指令的寻址方式2.380C51指令集2.451单片机汇编语言程序设计示例习题

第2章51单片机的指令系统

学习和使用单片机的一个重要322.1初识单片机的汇编指令2.1.1案例介绍及知识要点2.1.2程序示例2.1.3知识总结——指令格式2.1.4知识总结——指令类型2.1.5知识总结——常用符号说明2.1初识单片机的汇编指令2.1.1案例介绍及知识要332.1.1案例介绍及知识要点将内部RAM中20H单元和30H单元的无符号数相加,结果存入R0(高位)和R1(低位)中。了解单片机的指令格式。了解单片机的指令类型。熟悉指令中常用的符号。2.1.1案例介绍及知识要点将内部RAM中20H单元和3342.1.2程序示例2.1.2程序示例352.1.3知识总结——指令格式指令的表示方法就是指令格式。51单片机指令主要由操作码助记符字段和操作数字段组成。指令格式如下:

[标号:]操作码助记符[操作数1,][操作数2,][操作数3,][;注释]指令格式中各项的含义说明如下。[]:括号中的内容是可选的,其包含的内容因指令的不同可有可无。标号:根据编程需要给指令设定的符号地址,可有可无;通常在子程序入口或转移指令的目标地址处才赋予标号。标号由1~8个字符组成,第一个字符必须是英文字母,不能是数字或其他符号,标号后必须有冒号。操作码助记符:是指令的核心部分,由2~5个英文字母组成,如JB、MOV、CJNE或LCALL等。用于指示执行何种操作,如加、减、乘、除和传送等。操作数:表示指令操作的对象,可以是一个具体的数据,也可以是参加运算的数据所在的地址。操作数一般有以下几种形式。没有操作数:操作数隐含在操作码中,如RET指令。只有一个操作数:如INCA指令。有两个操作数:如MOVA,30H指令,操作数之间以逗号相隔。有3个操作数:如CJNEA,#00H,LOOP指令。注释:对指令的解释说明,用以提高程序的可读性,注释前必须加分号,注释换行时行前也要加分号。2.1.3知识总结——指令格式指令的表示方法就是指令格式362.1.4知识总结——指令类型80C51汇编语言有42种操作码助记符(见附录A),用来描述33种操作功能。一种操作码可以使用一种以上的数据类型。由于助记符规定了其访问的存储器空间,所以一种功能可能有几个助记符,如MOV、MOVX、MOVC。功能助记符与寻址方式组合可得到111条指令。按机器指令所占字节数分类,共有单字节指令(49条)、双字节指令(45条)和三字节指令(17条)。按指令执行时间分类,共有单周期指令(64条)、双周期指令(45条)和四周期指令(两条,乘/除)。按功能分类,80C51指令系统可分为:数据传送指令(29条)、算术运算指令(24条)、逻辑运算指令(24条)、位操作指令(17条)、控制转移指令(17条)。2.1.4知识总结——指令类型80C51汇编语言有42种372.1.5知识总结——常用符号说明2.1.5知识总结——常用符号说明382.251单片机指令的寻址方式在指令系统中,操作数是指令的重要组成部分,它指定了参加运算的数据或数据所在的地址单元。寻找源操作数地址的方式称为寻址方式。一条指令采用什么样的寻址方式是由指令的功能决定的。寻址方式越多,指令功能就越强,灵活性就越大。只有透彻地理解寻址方式,才能正确应用指令。2.2.1案例介绍及知识要点2.2.2程序示例2.2.3知识总结——直接寻址2.2.4知识总结——立即寻址2.2.5知识总结——寄存器寻址2.2.6知识总结——寄存器间接寻址2.2.7知识总结——变址寻址2.2.8知识总结——位寻址2.2.9知识总结——相对寻址2.251单片机指令的寻址方式在指令系统中,操作数是指令392.2.1案例介绍及知识要点编写多字节无符号数加法程序。设有两个多字节无符号数分别存放在内部RAM的DAT1和DAT2开始的区域中(低字节先存),字节个数存放在R2中,求它们的和,并将结果存放在DAT1开始的区域中。掌握单片机指令中几种常用的寻址方式。明确各寻址方式的寻址范围。

2.2.1案例介绍及知识要点编写多字节无符号数加法程序。402.2.2程序示例51单片机指令操作数的寻址方式主要有7种方式,分别为直接寻址、立即寻址、寄存器寻址、寄存器间接寻址、变址、寻址、位寻址、相对等址,其中,上述程序中涉及立即寻址、寄存器寻址、寄存器间接寻址、位寻址和相对寻址5种寻址方式。下面将详细介绍这7种寻址方式。

2.2.2程序示例51单片机指令操作数的寻址方式主要有7412.2.3知识总结——直接寻址直接寻址方式是指指令中含有操作数的地址,该地址指出了参与运算或传送的数据所在的字节单元或位地址。(1) 低128B单元在指令中直接以单元地址形式给出。(2) 特殊功能寄存器除可以用单元地址形式给出外,还可以用寄存器符号形式给出。注意:直接寻址方式是访问特殊功能寄存器的唯一方法。2.2.3知识总结——直接寻址直接寻址方式是指指令中含有422.2.4知识总结——立即寻址立即寻址方式是指操作数在指令字节中给出,即操作数以指令字节的形式存放于程序存储器中,为了与直接寻址指令中的直接地址相区别,需要在操作数前面加前缀标志“#”。例如,执行指令: MOV A,#30H MOV DPTR,#8000H第1条指令表示将立即数30H送入累加器A中。第2条指令表示把16位立即数送入数据指针DPTR中,其中高8位送DPH,低8位送DPL。2.2.4知识总结——立即寻址立即寻址方式是指操作数在指432.2.5知识总结——寄存器寻址寄存器寻址方式是指由指令指出某一个寄存器的内容作为操作数的寻址方式。寄存器寻址一般用于访问选定的通用寄存器R0~R7。如果寄存器寻址方式使用了另一个操作数,那么该操作数必须是累加器A。寄存器寻址指令都是单字节指令(一条指令在程序存储器中占一个字节地址)。寄存器寻址的寻址范围如下。(1) 当前通用寄存器组。(2) 部分特殊功能寄存器。例如,累加器A、寄存器B和数据指针DPTR。2.2.5知识总结——寄存器寻址寄存器寻址方式是指由指令442.2.6知识总结——寄存器间接寻址寄存器间接寻址是指由指令指出某一个寄存器的内容作为操作数地址的寻址方式。寄存器的内容不是操作数,而是操作数所在的存储器地址,操作数是通过寄存器间接得到的。寄存器间接寻址需要以寄存器符号的形式表示,为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方式中,应在寄存器的名称前面加前缀标志“@”。访问内部RAM或外部数据存储器的低256个字节时,只能采用R0或R1作为间接寻址寄存器。寄存器间接寻址的寻址范围如下。(1) 片内RAM低128B单元:这里只能用R0和R1作为间接寻址寄存器。(2) 片外RAM64KB:使用DPTR作为间接寻址寄存器。(3) 片外RAM低256B单元:可以使用DPTR、R0和R1作为间接寻址寄存器。(4) 堆栈区:以堆栈指针SP作为间接寻址寄存器。2.2.6知识总结——寄存器间接寻址寄存器间接寻址是指由452.2.7知识总结——变址寻址变址寻址方式用于访问程序存储器中的数据表格,以程序计数器PC或数据指针DPTR作为基址寄存器,以累加器作为变址寄存器。基址寄存器和变址寄存器的内容相加形成16位地址,该地址即作为操作数的地址。2.2.7知识总结——变址寻址变址寻址方式用于访问程序存462.2.8知识总结——位寻址80C51单片机有位处理功能,可以对数据位进行操作,因此就有了相应的位寻址方式。位寻址指令中可以直接使用位地址。 位寻址的寻址范围如下。(1) 片内RAM中的位寻址区。(2) 可位寻址的特殊功能寄存器。2.2.8知识总结——位寻址80C51单片机有位处理功能472.2.9知识总结——相对寻址相对寻址用于访问程序存储器,只出现在转移指令中。以PC的当前值加上指令中给出的相对偏移量(rel)形成转移地址。其中,rel是一个带符号的8位二进制数,以补码形式置于操作码之后存放。程序的转移范围以PC当前值为中心,介于-128~+127之间。2.2.9知识总结——相对寻址相对寻址用于访问程序存储器482.380C51指令集根据指令功能的不同,51单片机指令通常分为数据传送类、算术运算、逻辑运算类、控制转移类和位操作类这5大类指令。熟练掌握数据传送类指令、控制转移类及位操作的应用。了解逻辑运算类和算术运算类指令,熟记其标志符。2.3.1数据传送类指令2.3.2算术运算指令2.3.3逻辑运算及移位类指令2.3.4控制转移类指令2.3.5位操作类指令2.380C51指令集根据指令功能的不同,51单片机指令492.3.1数据传送类指令51指令系统中,数据传送类指令共有29条。这类指令将源操作数传送到指定的目的地址,传送后源操作数保持不变。数据传送类指令可以在累加器A、R0~R7工作寄存器与片内数据存储器、片外数据存储器和程序存储器之间进行数据传送。数据传送类指令一般不影响标志位,只有堆栈操作可以直接修改程序状态字PSW。数据传送类指令汇编语句的格式为: MOV ﹤目的操作数﹥,﹤源操作数﹥1.内部数据的传送指令1) 以累加器A为目的操作数的指令2) 以寄存器Rn为目的操作数的指令3) 以直接地址为目的操作数的指令4) 以寄存器间接地址为目的操作数的指令5) 16位数据传送指令6) 堆栈操作指令PUSH、POP7) 字节交换指令8) 半字节交换指令2.累加器A与片外RAM或I/O接口的数据传送指令3.查表指令注意:由于80C51单片机堆栈操作指令中的操作数只能使用直接寻址方式,不能使用寄存器寻址方式,所以将累加器压入堆栈时,累加器(ACC)不能简写A。堆栈操作时指令PUSH和POP要成对出现,且遵循后进先出(LIFO)和先进后出(FILO)的原则。2.3.1数据传送类指令51指令系统中,数据传送类指令共502.3.2算术运算指令C51的算术运算指令有加、减、乘、除法指令,以及增量和减量指令。大多数指令都要以累加器A来存放一个源操作数,另一个源操作数可以存放于任何一个工作寄存器Rn或片内RAM单元中,也可以是指令码中的一个立即数。1.加法指令1)H不带进位的加法指令2)带进位的加法指令3)加1指令4)十进制调整指令2.减法指令3.乘法指令4.除法指令2.3.2算术运算指令C51的算术运算指令有加、减、乘、512.3.3逻辑运算及移位类指令逻辑运算指令可以完成数字逻辑的与、或、异或、清0和取反操作。移位类指令是对累加器A的循环移位操作,包括左、右方向,以及带与不带进位标志位的方式,此类指令共有24条。1.逻辑与指令ANL2.逻辑或指令ORL3.逻辑异或指令XRL4.清零和求反指令5.循环移位指令2.3.3逻辑运算及移位类指令逻辑运算指令可以完成数字逻522.3.4控制转移类指令控制转移类指令通常用于实现循环结构和分支结构,共有17条,包括无条件转移指令、条件转移指令、子程序调用及返回指令。1.无条件转移指令1)绝对转移指令2)相对转移指令3)间接转移指令2.条件转移指令1)判0或判1条件转移指令2)比较转移指令3)减1不为0转移指令3.子程序调用与返回指令1)长调用指令2)绝对调用指令3)子程序返回指令4)中断返回指令4.空操作指令2.3.4控制转移类指令控制转移类指令通常用于实现循环结532.3.5位操作类指令51单片机的一个显著有特点就是具有位操作功能。相应的位操作指令共有17条,主要分为4类,即位传送指令、位状态控制指令、位逻辑运算指令和位条件转移指令。进行位操作时,以进位标志位CY作为位累加器。位地址可用以下方式表示。直接用位地址表示方式,如20H、D4H。采用字节地址加位的方式表示,两者之间用“.”隔开,如20H.0。采用寄存器名称加位的方式,如ACC.0、PSW.7、88H.7。位名称方式,如EA、TR0。1.位传送指令2.位状态控制指令1) 位清02) 位置13.位逻辑运算指令1) 位逻辑“与”2) 位逻辑“或”3) 位取反4.位条件转移指令1) 判CY转移2) 判bit转移2.3.5位操作类指令51单片机的一个显著有特点就是具有542.451单片机汇编语言程序设计示例汇编语言程序共有3种基本结构形式,即顺序结构、分支结构和循环结构。本节将从应用的角度出发,介绍这3种程序结构及各种常用程序的设计方法,并列举一些具有代表性的汇编语言源程序,作为参考。了解汇编语言程序设计的设计步骤。掌握汇编语言中常用伪指令的写法及功能。理解汇编语言常见的程序结构。掌握子程序的调用方法。熟悉常用程序的编写方法。2.4.1设计步骤2.4.2伪指令2.4.3顺序程序设计2.4.4分支程序设计2.4.5循环程序设计2.4.6子程序设计2.451单片机汇编语言程序设计示例汇编语言程序共有3种552.4.1设计步骤1.分析问题,确定算法2.根据算法,画出程序流程图3.分配内存工作区及有关端口地址4.编写程序5.上机调试2.4.1设计步骤1.分析问题,确定算法562.4.2伪指令在用80C51单片机设计应用系统时,可通过汇编指令来编写程序。用汇编语言编写的程序称为汇编语言源程序。伪指令是放在汇编语言源程序中用于指示汇编程序如何对源程序进行汇编的指令,它不同于指令系统中的指令,指令系统中的指令在汇编程序汇编时能产生相应的指令代码,而伪指令在汇编程序汇编时不会产生代码,只是对汇编过程进行相应的控制和说明。伪指令通常在汇编语言源程序中用于定义数据、分配存储空间,以及控制程序的输入输出等。80C51相对于一般的微型计算机汇编语言源程序来说结构简单,伪指令数目少。常用的伪指令只有几条,如下。1.ORG定位伪指令2.汇编结束伪指令END3.赋值伪指令EQU4.数据地址赋值伪指令DATA5.字节数据定义伪指令DB6.字数据定义伪指令DW7.位地址符号定义伪指令BIT2.4.2伪指令在用80C51单片机设计应用系统时,可通572.4.3顺序程序设计顺序结构程序是一种最简单、最基本的程序,无分支,按照程序编写的顺序依次执行。一般用来处理比较简单的算术或逻辑问题,主要用数据传送类指令和数据运算类指令来实现。2.4.3顺序程序

温馨提示

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

评论

0/150

提交评论