单片机原理及接口技术 第三章精选PPT.ppt
单片机原理及接口技术单片机原理及接口技术 第三第三章章第1页,此课件共86页哦3.1 MCS-51单片机指令系统单片机指令系统简介简介MCS-51MCS-51单单单单片片片片机机机机能能能能够够够够识识识识别别别别并并并并执执执执行行行行的的的的指指指指令令令令共共共共有有有有111111条条条条。这这这这111111条指令,构成了条指令,构成了条指令,构成了条指令,构成了MCS-51MCS-51单片机的指令系统。单片机的指令系统。单片机的指令系统。单片机的指令系统。3.1.1 MCS-513.1.1 MCS-51单片机指令系统的分类单片机指令系统的分类单片机指令系统的分类单片机指令系统的分类 1 1、MCS-51MCS-51单单单单片片片片机机机机指指指指令令令令系系系系统统统统按按按按指指指指令令令令所所所所占占占占的的的的字字字字节节节节数数数数可分为以下三类:可分为以下三类:可分为以下三类:可分为以下三类:(1 1)单字节指令()单字节指令()单字节指令()单字节指令(4949条)条)条)条)(2 2)双字节指令()双字节指令()双字节指令()双字节指令(4646条)条)条)条)(3 3)三字节指令()三字节指令()三字节指令()三字节指令(1616条)条)条)条)第2页,此课件共86页哦 2 2、按指令的执行时间可分为以下三类:、按指令的执行时间可分为以下三类:、按指令的执行时间可分为以下三类:、按指令的执行时间可分为以下三类:(1)(1)单周期指令(单周期指令(单周期指令(单周期指令(6565条)条)条)条)(2)(2)双周期指令(双周期指令(双周期指令(双周期指令(4444条)条)条)条)(3)(3)四周期指令(四周期指令(四周期指令(四周期指令(2 2条)条)条)条)3 3、按指令的功能可分为以下五类:、按指令的功能可分为以下五类:、按指令的功能可分为以下五类:、按指令的功能可分为以下五类:(1)(1)数据传送类指令(数据传送类指令(数据传送类指令(数据传送类指令(2929条)条)条)条)(2)(2)算术运算类指令(算术运算类指令(算术运算类指令(算术运算类指令(2424条)条)条)条)(3)(3)逻辑运算类指令(逻辑运算类指令(逻辑运算类指令(逻辑运算类指令(2424条)条)条)条)(4)(4)控制转移类指令(控制转移类指令(控制转移类指令(控制转移类指令(1717条)条)条)条)(5)(5)位操作类指令(位操作类指令(位操作类指令(位操作类指令(1717条)条)条)条)第3页,此课件共86页哦3.1.2 3.1.2 指令格式指令格式指令格式指令格式MCS-51MCS-51单片机汇编语言指令由操作码和操作数两单片机汇编语言指令由操作码和操作数两单片机汇编语言指令由操作码和操作数两单片机汇编语言指令由操作码和操作数两部分组成。部分组成。部分组成。部分组成。指令格式为:操作码指令格式为:操作码指令格式为:操作码指令格式为:操作码 操作数操作数操作数操作数 第4页,此课件共86页哦3.1.3 3.1.3 指令中的常用符号指令中的常用符号指令中的常用符号指令中的常用符号 Rn:Rn:表示当前工作寄存器表示当前工作寄存器表示当前工作寄存器表示当前工作寄存器R0R0R7R7中的一个。中的一个。中的一个。中的一个。Ri:Ri:表示寄存器间接寻址,常常作间接寻址的地表示寄存器间接寻址,常常作间接寻址的地表示寄存器间接寻址,常常作间接寻址的地表示寄存器间接寻址,常常作间接寻址的地址指针。其中址指针。其中址指针。其中址指针。其中RiRi代表代表代表代表R0R0和和和和R1R1寄存器中的一个。寄存器中的一个。寄存器中的一个。寄存器中的一个。Direct:Direct:表示内部数据存贮器单元的地址及特殊功表示内部数据存贮器单元的地址及特殊功表示内部数据存贮器单元的地址及特殊功表示内部数据存贮器单元的地址及特殊功能寄存器能寄存器能寄存器能寄存器SFRSFR的地址,对的地址,对的地址,对的地址,对SFRSFR而言,既可使用它的物理而言,既可使用它的物理而言,既可使用它的物理而言,既可使用它的物理地址,也可直接使用它的名字。地址,也可直接使用它的名字。地址,也可直接使用它的名字。地址,也可直接使用它的名字。#date:#date:表示表示表示表示8 8位立即数,即位立即数,即位立即数,即位立即数,即8 8位常数,取值范围为位常数,取值范围为位常数,取值范围为位常数,取值范围为#00H#00H#0FFH#0FFH第5页,此课件共86页哦#date16:#date16:表示表示表示表示1616位立即数,即位立即数,即位立即数,即位立即数,即1616位常数,取值范位常数,取值范位常数,取值范位常数,取值范围为围为围为围为#0000H#0000H#0FFFFH#0FFFFH addr16:addr16:表示表示表示表示1616位地址位地址位地址位地址 addr11:addr11:表示表示表示表示1111位地址位地址位地址位地址 rel:rel:用补码形式表示的地址偏移量,取值范围为用补码形式表示的地址偏移量,取值范围为用补码形式表示的地址偏移量,取值范围为用补码形式表示的地址偏移量,取值范围为-128128+127+127。Bit:Bit:表示内部表示内部表示内部表示内部RAMRAM和和和和SFRSFR中的具有位寻址功能的中的具有位寻址功能的中的具有位寻址功能的中的具有位寻址功能的位地址。位地址。位地址。位地址。SFRSFR中的位地址可以直接出现在指令中,为中的位地址可以直接出现在指令中,为中的位地址可以直接出现在指令中,为中的位地址可以直接出现在指令中,为了阅读方便,往往也可用了阅读方便,往往也可用了阅读方便,往往也可用了阅读方便,往往也可用SFRSFR的名字和所在的数位表的名字和所在的数位表的名字和所在的数位表的名字和所在的数位表示。如:表示示。如:表示示。如:表示示。如:表示PSWPSW中奇偶校验位,可写成中奇偶校验位,可写成中奇偶校验位,可写成中奇偶校验位,可写成D0HD0H,也可,也可,也可,也可写成写成写成写成PSW.0PSW.0的形式出现在指令中。的形式出现在指令中。的形式出现在指令中。的形式出现在指令中。:表示间接寻址寄存器或基址寄存器的前缀符号。表示间接寻址寄存器或基址寄存器的前缀符号。表示间接寻址寄存器或基址寄存器的前缀符号。表示间接寻址寄存器或基址寄存器的前缀符号。$:$:表示当前指令的地址。表示当前指令的地址。表示当前指令的地址。表示当前指令的地址。第6页,此课件共86页哦3.1.4 3.1.4 寻址方式寻址方式寻址方式寻址方式1 1、立即寻址立即寻址立即寻址立即寻址立即寻址是将操作数直接存放在指令中,作为指立即寻址是将操作数直接存放在指令中,作为指立即寻址是将操作数直接存放在指令中,作为指立即寻址是将操作数直接存放在指令中,作为指令的一部分存放在代码段里。立即寻址中的数,称为令的一部分存放在代码段里。立即寻址中的数,称为令的一部分存放在代码段里。立即寻址中的数,称为令的一部分存放在代码段里。立即寻址中的数,称为立即数。立即数。立即数。立即数。例如指令:例如指令:例如指令:例如指令:MOV AMOV A,#30H#30H2 2、直接寻址直接寻址直接寻址直接寻址直接寻址是将操作数的地址直接存放在指令中。直接寻址是将操作数的地址直接存放在指令中。直接寻址是将操作数的地址直接存放在指令中。直接寻址是将操作数的地址直接存放在指令中。这种寻址方式的操作数只能存放在内部数据存贮器和这种寻址方式的操作数只能存放在内部数据存贮器和这种寻址方式的操作数只能存放在内部数据存贮器和这种寻址方式的操作数只能存放在内部数据存贮器和特殊功能寄存器中。特殊功能寄存器中。特殊功能寄存器中。特殊功能寄存器中。例如:例如:例如:例如:MOV AMOV A,30H30H第7页,此课件共86页哦3 3、寄存器寻址寄存器寻址寄存器寻址寄存器寻址寄存器寻址是指操作数存放在以上所说的寄存器寄存器寻址是指操作数存放在以上所说的寄存器寄存器寻址是指操作数存放在以上所说的寄存器寄存器寻址是指操作数存放在以上所说的寄存器中,并且寻址时的寄存器已隐含在指令的操作码中。中,并且寻址时的寄存器已隐含在指令的操作码中。中,并且寻址时的寄存器已隐含在指令的操作码中。中,并且寻址时的寄存器已隐含在指令的操作码中。例如:例如:例如:例如:MOV AMOV A,R0R04 4、寄存器间址寄存器间址寄存器间址寄存器间址寄存器间址是指操作数存放在以寄存器内容为地寄存器间址是指操作数存放在以寄存器内容为地寄存器间址是指操作数存放在以寄存器内容为地寄存器间址是指操作数存放在以寄存器内容为地址的单元中址的单元中址的单元中址的单元中例如:例如:例如:例如:MOV AMOV A,R0R0第8页,此课件共86页哦5 5、变址寻址变址寻址变址寻址变址寻址变址寻址是指操作数存放在变址寄存器和基址寄变址寻址是指操作数存放在变址寄存器和基址寄变址寻址是指操作数存放在变址寄存器和基址寄变址寻址是指操作数存放在变址寄存器和基址寄存器的内容相加形成的数为地址的单元中。其中累加存器的内容相加形成的数为地址的单元中。其中累加存器的内容相加形成的数为地址的单元中。其中累加存器的内容相加形成的数为地址的单元中。其中累加器器器器A A作变址寄存器、程序计数器作变址寄存器、程序计数器作变址寄存器、程序计数器作变址寄存器、程序计数器PCPC或寄存器或寄存器或寄存器或寄存器DPTRDPTR作基作基作基作基址寄存器。址寄存器。址寄存器。址寄存器。例如:例如:例如:例如:MOVC MOVC A,A+DPTRA,A+DPTR6 6、相对寻址相对寻址相对寻址相对寻址相对寻址是将程序计数器相对寻址是将程序计数器相对寻址是将程序计数器相对寻址是将程序计数器PCPC的当前值与指令第二的当前值与指令第二的当前值与指令第二的当前值与指令第二字节给出的偏移量相加,从而形成转移的目标地址。字节给出的偏移量相加,从而形成转移的目标地址。字节给出的偏移量相加,从而形成转移的目标地址。字节给出的偏移量相加,从而形成转移的目标地址。例如:例如:例如:例如:JZ 61HJZ 61H第9页,此课件共86页哦7 7、位寻址位寻址位寻址位寻址位寻址,是指对片内位寻址,是指对片内位寻址,是指对片内位寻址,是指对片内RAMRAM中中中中20H20H2FH2FH中的中的中的中的128128个个个个位地址,以及位地址,以及位地址,以及位地址,以及SFRSFR中的中的中的中的1111个可进行位寻址的寄存器中个可进行位寻址的寄存器中个可进行位寻址的寄存器中个可进行位寻址的寄存器中的位地址寻址。的位地址寻址。的位地址寻址。的位地址寻址。例如:位寻址指令例如:位寻址指令例如:位寻址指令例如:位寻址指令MOV CMOV C,20H20H,此指令是将,此指令是将,此指令是将,此指令是将RAMRAM中位寻址区中位寻址区中位寻址区中位寻址区20H20H位地址中的内容,送给位累加器位地址中的内容,送给位累加器位地址中的内容,送给位累加器位地址中的内容,送给位累加器C C。字节地址寻址指令:。字节地址寻址指令:。字节地址寻址指令:。字节地址寻址指令:MOV AMOV A,20H20H,此指令是将,此指令是将,此指令是将,此指令是将内部内部内部内部RAMRAM中中中中20H20H单元中的内容送给累加器单元中的内容送给累加器单元中的内容送给累加器单元中的内容送给累加器A A。第10页,此课件共86页哦3.2 MCS-51单片机指令系统单片机指令系统3.2.1 3.2.1 数据传送类指令数据传送类指令数据传送类指令数据传送类指令1 1、内部传送指令内部传送指令内部传送指令内部传送指令(1616条条条条)(1)(1)将数据传送到累加器将数据传送到累加器将数据传送到累加器将数据传送到累加器A A的指令的指令的指令的指令(4 4条条条条)第11页,此课件共86页哦第12页,此课件共86页哦(2 2)将数据传送到工作寄存器将数据传送到工作寄存器将数据传送到工作寄存器将数据传送到工作寄存器RnRn的指令的指令的指令的指令(3 3条条条条)第13页,此课件共86页哦(3 3)将将将将8 8位位位位数数数数据据据据直直直直接接接接传传传传送送送送到到到到直直直直接接接接地地地地址址址址(内内内内部部部部RAMRAM单单单单元元元元或或或或SFRSFR寄存器寄存器寄存器寄存器)指令指令指令指令(5 5条条条条)第14页,此课件共86页哦(4 4)将将将将8 8位位位位数数数数据据据据传传传传送送送送到到到到以以以以间间间间接接接接寄寄寄寄存存存存器器器器寻寻寻寻址址址址的的的的RAMRAM单单单单元元元元的的的的指令指令指令指令(3 3条条条条)。)。)。)。第15页,此课件共86页哦(5 5)1616位数据传送指令位数据传送指令位数据传送指令位数据传送指令(1 1条条条条)第16页,此课件共86页哦第17页,此课件共86页哦第18页,此课件共86页哦第19页,此课件共86页哦第20页,此课件共86页哦第21页,此课件共86页哦第22页,此课件共86页哦第23页,此课件共86页哦第24页,此课件共86页哦第25页,此课件共86页哦第26页,此课件共86页哦第27页,此课件共86页哦第28页,此课件共86页哦第29页,此课件共86页哦第30页,此课件共86页哦第31页,此课件共86页哦第32页,此课件共86页哦第33页,此课件共86页哦第34页,此课件共86页哦第35页,此课件共86页哦第36页,此课件共86页哦第37页,此课件共86页哦3.3 汇编语言程序设计汇编语言程序设计3.3.1 3.3.1 汇编语言及其语句格式汇编语言及其语句格式汇编语言及其语句格式汇编语言及其语句格式1 1、汇编语言、汇编语言、汇编语言、汇编语言这里介绍这里介绍这里介绍这里介绍MCS-51MCS-51单片机的汇编语言。单片机的汇编语言。单片机的汇编语言。单片机的汇编语言。2 2、汇编语言的语句格式、汇编语言的语句格式、汇编语言的语句格式、汇编语言的语句格式一一一一条条条条汇汇汇汇编编编编语语语语言言言言的的的的语语语语句句句句包包包包括括括括四四四四部部部部分分分分内内内内容容容容:标标标标号号号号、操操操操作码、操作数和注释。其格式为:作码、操作数和注释。其格式为:作码、操作数和注释。其格式为:作码、操作数和注释。其格式为:标号:操作码操作数;注释标号:操作码操作数;注释标号:操作码操作数;注释标号:操作码操作数;注释 例如:例如:例如:例如:LOOP:MOV A,#20H LOOP:MOV A,#20H;(A)20H(A)20H第38页,此课件共86页哦3.3.2 3.3.2 伪指令伪指令伪指令伪指令1 1、定位伪指令定位伪指令定位伪指令定位伪指令格式:格式:格式:格式:ORG nORG n2 2、定义字节伪指令定义字节伪指令定义字节伪指令定义字节伪指令格式:标号:格式:标号:格式:标号:格式:标号:DB X1,X2,XnDB X1,X2,Xn此伪指令的功能是把此伪指令的功能是把此伪指令的功能是把此伪指令的功能是把XiXi存入从标号开始连续的单元中。存入从标号开始连续的单元中。存入从标号开始连续的单元中。存入从标号开始连续的单元中。3 3、定义双字节伪指令定义双字节伪指令定义双字节伪指令定义双字节伪指令格式:标号:格式:标号:格式:标号:格式:标号:DW X1DW X1,X2X2,XnXn此伪指令的功能是把此伪指令的功能是把此伪指令的功能是把此伪指令的功能是把XiXi存入从标号开始的连续单元中。存入从标号开始的连续单元中。存入从标号开始的连续单元中。存入从标号开始的连续单元中。第39页,此课件共86页哦4 4、预留存贮区伪指令预留存贮区伪指令预留存贮区伪指令预留存贮区伪指令格式:格式:格式:格式:DS nDS nDS nDS n从标号指定单元开始,预留从标号指定单元开始,预留从标号指定单元开始,预留从标号指定单元开始,预留n n个单元的存贮区。个单元的存贮区。个单元的存贮区。个单元的存贮区。5 5、赋值伪指令赋值伪指令赋值伪指令赋值伪指令格式:字符名称格式:字符名称格式:字符名称格式:字符名称x EQU nx EQU n此指令的功能是将数据或地址此指令的功能是将数据或地址此指令的功能是将数据或地址此指令的功能是将数据或地址n n赋给字符名称。赋给字符名称。赋给字符名称。赋给字符名称。6 6、结束汇编指令结束汇编指令结束汇编指令结束汇编指令格式:格式:格式:格式:END ENDENDEND指示源程序到结束,常将其放在汇编语言源指示源程序到结束,常将其放在汇编语言源指示源程序到结束,常将其放在汇编语言源指示源程序到结束,常将其放在汇编语言源程序的末尾。程序的末尾。程序的末尾。程序的末尾。第40页,此课件共86页哦3.3.3 3.3.3 汇编语言程序设计过程汇编语言程序设计过程汇编语言程序设计过程汇编语言程序设计过程1 1、分析任务,确定算法或解题思路分析任务,确定算法或解题思路分析任务,确定算法或解题思路分析任务,确定算法或解题思路2 2、根据算法和解决思路画出程序流程图根据算法和解决思路画出程序流程图根据算法和解决思路画出程序流程图根据算法和解决思路画出程序流程图流程图是由一些框图和流程线组合而成:流程图是由一些框图和流程线组合而成:流程图是由一些框图和流程线组合而成:流程图是由一些框图和流程线组合而成:置的框图连接在一起,位于不同框图的圈内,应置的框图连接在一起,位于不同框图的圈内,应置的框图连接在一起,位于不同框图的圈内,应置的框图连接在一起,位于不同框图的圈内,应标注相同的字母。标注相同的字母。标注相同的字母。标注相同的字母。第41页,此课件共86页哦3 3、根据流程图编写程序根据流程图编写程序根据流程图编写程序根据流程图编写程序4 4、上机调试程序上机调试程序上机调试程序上机调试程序3.3.4 3.3.4 顺序结构程序设计顺序结构程序设计顺序结构程序设计顺序结构程序设计按按按按照照照照程程程程序序序序编编编编写写写写的的的的顺顺顺顺序序序序,依依依依次次次次执执执执行行行行。任任任任何何何何复复复复杂杂杂杂的的的的程程程程序,都含有较大成份的顺序结构程序。序,都含有较大成份的顺序结构程序。序,都含有较大成份的顺序结构程序。序,都含有较大成份的顺序结构程序。【例例例例3-83-8】将两位压缩将两位压缩将两位压缩将两位压缩BCDBCD码转换成二进制数码转换成二进制数码转换成二进制数码转换成二进制数编程思路:(编程思路:(编程思路:(编程思路:(a a1 1a a0 0)BCDBCD=a=a1 110+a10+a0 0编编编编程程程程说说说说明明明明:待待待待转转转转换换换换的的的的两两两两位位位位压压压压缩缩缩缩BCDBCD码码码码存存存存放放放放于于于于R2R2,转换结果存回转换结果存回转换结果存回转换结果存回R2R2。程序流程图如图程序流程图如图程序流程图如图程序流程图如图3-13-1所示。所示。所示。所示。第42页,此课件共86页哦第43页,此课件共86页哦编程如下:编程如下:编程如下:编程如下:START:MOV A,R2START:MOV A,R2 ANL A,#0F0H ANL A,#0F0H ;取高位;取高位;取高位;取高位BCDBCD码码码码 SWAP A SWAP A MOV B,#0AH MOV B,#0AH MVL AB MVL AB MOV R3,A MOV R3,A MOV A,R2 MOV A,R2 ANL A,#0FH ANL A,#0FH ;取低位;取低位;取低位;取低位BCDBCD码码码码 ADD A,R3 ADD A,R3 MOV R2,A MOV R2,A END END第44页,此课件共86页哦3.3.5 3.3.5 分支程序设计分支程序设计分支程序设计分支程序设计第45页,此课件共86页哦【例例例例3-93-9】求符号函数的值求符号函数的值求符号函数的值求符号函数的值 1 1 当当当当X0X0Y=Y=0 0 当当当当X=0 X=0 的值。的值。的值。的值。-1 -1 当当当当X0 X99时时时时,加加加加37H37H。程程程程序序序序流流流流程程程程如如如如图图图图3-113-11所示。所示。所示。所示。第75页,此课件共86页哦第76页,此课件共86页哦参考程序如下:参考程序如下:参考程序如下:参考程序如下:ORG 0100 H ORG 0100 H MOV A,40 H MOV A,40 H ANL A ,#0F H ANL A ,#0F H CLR CCLR C SUBB A,#0AHSUBB A,#0AH第77页,此课件共86页哦JC NEXTJC NEXTADD A,#0AHADD A,#0AH ADD A,#37HADD A,#37HSJMP SAVESJMP SAVENEXT:NEXT:ADD A,#0AHADD A,#0AH ADD A,#30H ADD A,#30HSAVE:SAVE:MOV 40H,AMOV 40H,A ENDEND第78页,此课件共86页哦(2 2)查表求解:查表求解:查表求解:查表求解:ORG 0100HORG 0100HMOV A,40HMOV A,40HANL A,#0FHANL A,#0FH ADD A,02HADD A,02H MOVC A,A+PCMOVC A,A+PC MOV 40H,AMOV 40H,A DB 0,1,2,3,4,5DB 0,1,2,3,4,5 DB 6,7,8,9,A,BDB 6,7,8,9,A,B DB C,D,E,FDB C,D,E,F ENDEND第79页,此课件共86页哦3.3.93.3.9 子程序设计子程序设计子程序设计子程序设计1 1、子程序的调用与返回子程序的调用与返回子程序的调用与返回子程序的调用与返回MCS-51MCS-51单单单单片片片片机机机机有有有有两两两两条条条条子子子子程程程程序序序序调调调调用用用用指指指指令令令令:ACALL ACALL addr11addr11、LCALL addr16 LCALL addr16;一条子程序返回指令;一条子程序返回指令;一条子程序返回指令;一条子程序返回指令RETRET。2 2、保存与恢复寄存器内容保存与恢复寄存器内容保存与恢复寄存器内容保存与恢复寄存器内容例如:例如:例如:例如:SUB1:PUSH PSWSUB1:PUSH PSW PUSH A PUSH A PUSH R6 PUSH R6 (此处省略了子程序的内容此处省略了子程序的内容此处省略了子程序的内容此处省略了子程序的内容)POP R6 POP R6 POP A POP A PUSH PSW PUSH PSW第80页,此课件共86页哦3 3、子程序的参数传递子程序的参数传递子程序的参数传递子程序的参数传递主程序在调用子程序时,经常需要传送一些参数,主程序在调用子程序时,经常需要传送一些参数,主程序在调用子程序时,经常需要传送一些参数,主程序在调用子程序时,经常需要传送一些参数,子程序运行完后也经常将一些参数回送给主程序,这子程序运行完后也经常将一些参数回送给主程序,这子程序运行完后也经常将一些参数回送给主程序,这子程序运行完后也经常将一些参数回送给主程序,这叫参数传递。叫参数传递。叫参数传递。叫参数传递。【例例例例3-17 3-17】编程计算编程计算编程计算编程计算c=ac=a2 2+b+b2 2。编程说明:这个问题中,计算某数的平方可以用编程说明:这个问题中,计算某数的平方可以用编程说明:这个问题中,计算某数的平方可以用编程说明:这个问题中,计算某数的平方可以用子程序来实现,两次调用该子程序,并求和便得到所子程序来实现,两次调用该子程序,并求和便得到所子程序来实现,两次调用该子程序,并求和便得到所子程序来实现,两次调用该子程序,并求和便得到所需结果。设需结果。设需结果。设需结果。设a a、b b 分别存于内部分别存于内部分别存于内部分别存于内部RAM RAM 的的的的30H30H、31H31H单元,单元,单元,单元,结果结果结果结果C C存于内部存于内部存于内部存于内部RAMRAM的的的的40H40H单元。单元。单元。单元。第81页,此课件共86页哦参数传递:主程序中,将某数存放到累加器参数传递:主程序中,将某数存放到累加器参数传递:主程序中,将某数存放到累加器参数传递:主程序中,将某数存放到累加器A A中,中,中,中,作为子程序的入口参数;子程序中,将所求数的平方作为子程序的入口参数;子程序中,将所求数的平方作为子程序的入口参数;子程序中,将所求数的平方作为子程序的入口参数;子程序中,将所求数的平方值存放在累加器值存放在累加器值存放在累加器值存放在累加器A A中,作为出口参数(即主程序的返回中,作为出口参数(即主程序的返回中,作为出口参数(即主程序的返回中,作为出口参数(即主程序的返回值)。值)。值)。值)。子程序的入口参数:子程序的入口参数:子程序的入口参数:子程序的入口参数:A A中存放某数的值。中存放某数的值。中存放某数的值。中存放某数的值。子程序的出口参数:子程序的出口参数:子程序的出口参数:子程序的出口参数:A A中存放所求数的平方。中存放所求数的平方。中存放所求数的平方。中存放所求数的平方。子程序如下:子程序如下:子程序如下:子程序如下:SQR:SQR:INC AINC A MOVC A,A+PC MOVC A,A+PC ;查平方表;查平方表;查平方表;查平方表 RETRETTABLE:TABLE:DB 0,1,4,9,16DB 0,1,4,9,16 DB 25,36,49,64,81DB 25,36,49,64,81主程序流程图如图主程序流程图如图主程序流程图如图主程序流程图如图3-12 3-12 所示。所示。所示。所示。第82页,此课件共86页哦第83页,此课件共86页哦主程序如下:主程序如下:主程序如下:主程序如下:START:START:MOV A,30HMOV A,30H ACALL SQR ACALL SQR ;调查表子程序;调查表子程序;调查表子程序;调查表子程序 MOV R1,A MOV R1,A ;a a2 2暂存暂存暂存暂存R1R1中中中中 MOV A,31H MOV A,31H ACALL SQR ACALL SQR ;调查表子程序;调查表子程序;调查表子程序;调查表子程序 ADD A,R1ADD A,R1 MOV 40H,AMOV 40H,A ENDEND第84页,此课件共86页哦4 4、子程序的嵌套子程序的嵌套第85页,此课件共86页哦3.4 MCS-51MCS-51汇编语汇编语言实用程序设计言实用程序设计(略略)第86页,此课件共86页哦