单片机原理与接口技术PPT电子课件教案第4章MCS51汇编语言程序设计

上传人:m**** 文档编号:579937144 上传时间:2024-08-27 格式:PPT 页数:72 大小:325.50KB
返回 下载 相关 举报
单片机原理与接口技术PPT电子课件教案第4章MCS51汇编语言程序设计_第1页
第1页 / 共72页
单片机原理与接口技术PPT电子课件教案第4章MCS51汇编语言程序设计_第2页
第2页 / 共72页
单片机原理与接口技术PPT电子课件教案第4章MCS51汇编语言程序设计_第3页
第3页 / 共72页
单片机原理与接口技术PPT电子课件教案第4章MCS51汇编语言程序设计_第4页
第4页 / 共72页
单片机原理与接口技术PPT电子课件教案第4章MCS51汇编语言程序设计_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《单片机原理与接口技术PPT电子课件教案第4章MCS51汇编语言程序设计》由会员分享,可在线阅读,更多相关《单片机原理与接口技术PPT电子课件教案第4章MCS51汇编语言程序设计(72页珍藏版)》请在金锄头文库上搜索。

1、单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录单片机单片机原理与接口技术原理与接口技术第第4章章 MCS-51汇编语言汇编语言程序设计程序设计8/27/20241单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录(1) (1) 了解汇编语言编程的基础知识。了解汇编语言编程的基础知识。了解汇编语言编程的基础知识。了解汇编语言编程的基础知识。(2) (2) 了解汇编语言程序设计的基本步骤和方法。了解汇编语言程序设计的基本步骤和方法。了解汇编语言程序设计的基本步骤和方法。了解汇编语言程序设计的基本步骤和方法。(3) (3) 了解汇编语言目标程序效率高、占存储空间了解汇编语

2、言目标程序效率高、占存储空间了解汇编语言目标程序效率高、占存储空间了解汇编语言目标程序效率高、占存储空间少、运行速度快、实时性强等特点。少、运行速度快、实时性强等特点。少、运行速度快、实时性强等特点。少、运行速度快、实时性强等特点。(4) (4) 掌握掌握掌握掌握MCS-51MCS-51汇编语言的顺序、分支、循环、汇编语言的顺序、分支、循环、汇编语言的顺序、分支、循环、汇编语言的顺序、分支、循环、查表及子程序的结构。查表及子程序的结构。查表及子程序的结构。查表及子程序的结构。(5) (5) 掌握算术运算、数制转换及标度变换等实用掌握算术运算、数制转换及标度变换等实用掌握算术运算、数制转换及标度

3、变换等实用掌握算术运算、数制转换及标度变换等实用汇编程序的编程方法。汇编程序的编程方法。汇编程序的编程方法。汇编程序的编程方法。本章教学要求本章教学要求 8/27/20242单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.1 4.1 程序设计概述程序设计概述程序设计概述程序设计概述4.1.1 4.1.1 程序设计的步骤程序设计的步骤程序设计的步骤程序设计的步骤4.1.2 4.1.2 程序设计的方法程序设计的方法程序设计的方法程序设计的方法4.1.3 4.1.3 汇编语言的规范汇编语言的规范汇编语言的规范汇编语言的规范4.1.4 4.1.4 汇编语言程序编辑和汇编语言程序编辑和

4、汇编语言程序编辑和汇编语言程序编辑和汇编汇编汇编汇编4.2 4.2 结构化程序设计方法结构化程序设计方法结构化程序设计方法结构化程序设计方法本本 章章 目目 录录4.2.1 4.2.1 顺序结构程序顺序结构程序顺序结构程序顺序结构程序4.2.2 4.2.2 分支结构程序分支结构程序分支结构程序分支结构程序4.2.3 4.2.3 循环结构程序循环结构程序循环结构程序循环结构程序4.2.4 4.2.4 查表程序查表程序查表程序查表程序4.2.5 4.2.5 子程序子程序子程序子程序4.3 4.3 汇编语言程序设计实例汇编语言程序设计实例汇编语言程序设计实例汇编语言程序设计实例习题与思考题习题与思考

5、题习题与思考题习题与思考题8/27/20243单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.1 程序设计概述程序设计概述n n本本本本章章章章介介介介绍绍绍绍使使使使用用用用MCS-51MCS-51指指指指令令令令系系系系统统统统编编编编写写写写汇汇汇汇编编编编程程程程序序序序的的的的方方方方法法法法。与与与与高高高高级级级级语语语语言言言言相相相相比比比比,汇汇汇汇编编编编语语语语言言言言具具具具有有有有实实实实时时时时性性性性好好好好、代代代代码码码码效效效效率率率率高高高高、执执执执行行行行速速速速度度度度快快快快以以以以及及及及节节节节约约约约内内内内存存存存空空空

6、空间间间间等等等等优优优优点点点点,同同同同时时时时还还还还可可可可以以以以充充充充分分分分利利利利用用用用机机机机器器器器的的的的硬硬硬硬件件件件结结结结构构构构与与与与功功功功能能能能来操作硬件端口。来操作硬件端口。来操作硬件端口。来操作硬件端口。n n本本本本章章章章介介介介绍绍绍绍汇汇汇汇编编编编语语语语言言言言程程程程序序序序编编编编写写写写的的的的一一一一般般般般知知知知识识识识、程程程程序序序序设设设设计计计计的的的的基基基基本本本本步步步步骤骤骤骤和和和和格格格格式式式式,以以以以及及及及各各各各种种种种类类类类型型型型的的的的程程程程序序序序设设设设计计计计,包包包包括括括括

7、顺顺顺顺序序序序程程程程序序序序、分分分分支支支支程程程程序序序序、循循循循环环环环程程程程序序序序、查查查查表表表表程程程程序序序序和子程序等。和子程序等。和子程序等。和子程序等。8/27/20244单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.1.1 程序设计的步骤程序设计的步骤n nMCS-51MCS-51单单单单片片片片机机机机提提提提供供供供111111条条条条指指指指令令令令,它它它它们们们们以以以以指指指指令令令令助助助助记记记记符符符符的的的的形形形形式式式式出出出出现现现现,指指指指令令令令助助助助记记记记符符符符的的的的集集集集合合合合称称称称为为为为汇

8、编语言汇编语言汇编语言汇编语言。n n由汇编语言编写的程序称为由汇编语言编写的程序称为由汇编语言编写的程序称为由汇编语言编写的程序称为汇编语言源程序汇编语言源程序汇编语言源程序汇编语言源程序。n n汇汇汇汇编编编编语语语语言言言言源源源源程程程程序序序序必必必必须须须须翻翻翻翻译译译译成成成成机机机机器器器器代代代代码码码码组组组组成成成成的的的的目目目目标标标标程程程程序序序序,机机机机器器器器才才才才能能能能执执执执行行行行。用用用用汇汇汇汇编编编编语语语语言言言言编编编编制制制制程序的过程,称为程序的过程,称为程序的过程,称为程序的过程,称为汇编语言程序设计汇编语言程序设计汇编语言程序设

9、计汇编语言程序设计。8/27/20245单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录n n使使使使用用用用汇汇汇汇编编编编语语语语言言言言设设设设计计计计一一一一个个个个程程程程序序序序,大大大大致致致致可可可可分分分分为为为为以以以以下下下下几几几几个个个个步骤步骤步骤步骤: 1) 1) 分析题意,明确要求。分析题意,明确要求。分析题意,明确要求。分析题意,明确要求。2) 2) 确定算法。确定算法。确定算法。确定算法。3) 3) 画程序流程图,用图解来描述和说明解题步骤。画程序流程图,用图解来描述和说明解题步骤。画程序流程图,用图解来描述和说明解题步骤。画程序流程图,用图解

10、来描述和说明解题步骤。4) 4) 分配内存单元,确定程序与数据区的存放地址。分配内存单元,确定程序与数据区的存放地址。分配内存单元,确定程序与数据区的存放地址。分配内存单元,确定程序与数据区的存放地址。5) 5) 编写源程序。编写源程序。编写源程序。编写源程序。6) 6) 程序优化。程序优化。程序优化。程序优化。7) 7) 上机调试、修改和最后确定源程序。上机调试、修改和最后确定源程序。上机调试、修改和最后确定源程序。上机调试、修改和最后确定源程序。4.1.1 程序设计的步骤程序设计的步骤8/27/20246单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.1.2 程序设计的方

11、法程序设计的方法1 1 1 1模块化程序设计模块化程序设计模块化程序设计模块化程序设计2 2 2 2尽量采用循环及子程序结构尽量采用循环及子程序结构尽量采用循环及子程序结构尽量采用循环及子程序结构3 3 3 3自上而下的程序设计自上而下的程序设计自上而下的程序设计自上而下的程序设计8/27/20247单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.1.3 汇编语言的规范汇编语言的规范n n汇汇汇汇编编编编语语语语言言言言源源源源程程程程序序序序由由由由汇汇汇汇编编编编指指指指令令令令和和和和伪伪伪伪指指指指令令令令两两两两者者者者构构构构成成成成。用用用用汇汇汇汇编编编编语语

12、语语言言言言编编编编写写写写的的的的源源源源程程程程序序序序通通通通常常常常需需需需经经经经过过过过微微微微机机机机汇汇汇汇编编编编程程程程序编译(汇编)成机器码后才能被单片机执行。序编译(汇编)成机器码后才能被单片机执行。序编译(汇编)成机器码后才能被单片机执行。序编译(汇编)成机器码后才能被单片机执行。n n为为为为了了了了对对对对源源源源程程程程序序序序汇汇汇汇编编编编,在在在在源源源源程程程程序序序序中中中中必必必必须须须须使使使使用用用用一一一一些些些些“伪伪伪伪指指指指令令令令”。伪伪伪伪指指指指令令令令是是是是便便便便于于于于程程程程序序序序阅阅阅阅读读读读和和和和编编编编写写写

13、写的的的的指指指指令令令令,它它它它即即即即不不不不控控控控制制制制机机机机器器器器的的的的操操操操作作作作也也也也不不不不能能能能被被被被汇汇汇汇编编编编成成成成机机机机器器器器代代代代码码码码,只只只只是是是是为为为为汇汇汇汇编编编编程程程程序序序序所所所所识识识识别别别别的的的的常常常常用用用用符符符符号号号号,并并并并指指指指导导导导汇汇汇汇编编编编如何进行,故称为伪指令。如何进行,故称为伪指令。如何进行,故称为伪指令。如何进行,故称为伪指令。8/27/20248单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录 标标标标号号号号: : 助助助助记记记记符符符符 操操操操作

14、作作作数数数数1 1 , ,操操操操作作作作数数数数2 2 , ,操操操操作作作作数数数数3 3 ; ;注注注注释释释释 n n标号:标号:标号:标号:标号是指令地址的标识符号标号是指令地址的标识符号标号是指令地址的标识符号标号是指令地址的标识符号。有有有有了了了了标标标标号号号号,程程程程序序序序中中中中的的的的其其其其它它它它语语语语句句句句才才才才能能能能访访访访问问问问该该该该语语语语句句句句。有有有有关关关关标号的规定如下。标号的规定如下。标号的规定如下。标号的规定如下。1) 1) 标号标号标号标号由由由由1818个个个个ASCIIASCII字符组成字符组成字符组成字符组成。第一个字

15、符必须是。第一个字符必须是。第一个字符必须是。第一个字符必须是字母字母字母字母,其余字符可以是字母、数字或其它特定字符;,其余字符可以是字母、数字或其它特定字符;,其余字符可以是字母、数字或其它特定字符;,其余字符可以是字母、数字或其它特定字符;2) 2) 标号不能使用该汇编语言已经定义了的符号。如标号不能使用该汇编语言已经定义了的符号。如标号不能使用该汇编语言已经定义了的符号。如标号不能使用该汇编语言已经定义了的符号。如指令助记符、伪指令以及寄存器符号名称等;指令助记符、伪指令以及寄存器符号名称等;指令助记符、伪指令以及寄存器符号名称等;指令助记符、伪指令以及寄存器符号名称等;3) 3) 标

16、号后边必须跟以标号后边必须跟以标号后边必须跟以标号后边必须跟以冒号冒号冒号冒号。1 1汇编指令格式汇编指令格式汇编指令格式汇编指令格式4.1.3 汇编语言的规范汇编语言的规范-标号标号标号标号8/27/20249单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录n n操操操操作作作作数数数数:操操操操作作作作数数数数用用用用于于于于给给给给指指指指令令令令的的的的操操操操作作作作提提提提供供供供数数数数据据据据或或或或地地地地址址址址。在在在在一一一一条条条条汇汇汇汇编编编编语语语语句句句句中中中中操操操操作作作作数数数数可可可可能能能能是是是是空空空空白白白白的的的的,也也也也可

17、可可可能能能能包包包包括括括括两两两两项项项项或或或或三三三三项项项项。各各各各操操操操作作作作数数数数间间间间用用用用逗逗逗逗号号号号分分分分隔隔隔隔。操操操操作作作作数数数数字字字字段段段段的的的的内内内内容容容容可可可可能能能能包包包包括括括括工工工工作作作作寄寄寄寄存存存存器器器器、特特特特殊殊殊殊功功功功能能能能寄寄寄寄存存存存器器器器、标号、常数和表达式。标号、常数和表达式。标号、常数和表达式。标号、常数和表达式。n n注注注注释释释释:对对对对程程程程序序序序加加加加以以以以说说说说明明明明,是是是是不不不不可可可可执执执执行行行行部部部部分分分分。注注注注释释释释字字字字段段段

18、段必必必必须须须须以以以以分分分分号号号号“; ; ; ;”开开开开头头头头,长长长长度度度度不不不不限限限限,当当当当一一一一行行行行书书书书写写写写不不不不下下下下时时时时,可可可可以以以以换换换换行行行行接接接接着着着着书书书书写写写写,但但但但换换换换行行行行时时时时应应应应注注注注意意意意在在在在开开开开头使用分号头使用分号头使用分号头使用分号“; ; ; ;”。4.1.3 汇编语言的规范汇编语言的规范-操作数操作数8/27/202410单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录MCS-51MCS-51系列单片机的常用伪指令有:系列单片机的常用伪指令有:系列单片机

19、的常用伪指令有:系列单片机的常用伪指令有:ORGORG、 ENDEND、EQUEQU、DBDB、DWDW、DSDS和和和和BITBIT等。等。等。等。2 2伪指令伪指令伪指令伪指令4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令ORG格式:格式:格式:格式: 标号标号标号标号: ORG 16: ORG 16位地址位地址位地址位地址功能:功能:功能:功能:规定程序块或数据块存放的起始地址规定程序块或数据块存放的起始地址规定程序块或数据块存放的起始地址规定程序块或数据块存放的起始地址。如:如:如:如:ORGORG8000H8000H; ;规规规规定定定定下下下下面面面面的的的的第第第第一一一

20、一条条条条指指指指令令令令从从从从地地地地址址址址8000H8000H单元开始存放,即标号单元开始存放,即标号单元开始存放,即标号单元开始存放,即标号STARTSTART的值为的值为的值为的值为8000H8000HSTART:START:MOVMOV A, #30HA, #30H.(1 1) 汇编起始伪指令汇编起始伪指令汇编起始伪指令汇编起始伪指令ORGORG8/27/202411单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录格式:格式:格式:格式: 标号标号标号标号: :END END 表达式表达式表达式表达式 功能:功能:功能:功能:结束汇编结束汇编结束汇编结束汇编。汇编程

21、序遇到。汇编程序遇到。汇编程序遇到。汇编程序遇到ENDEND伪指令后即结束汇伪指令后即结束汇伪指令后即结束汇伪指令后即结束汇编。处于编。处于编。处于编。处于ENDEND之后的程序,汇之后的程序,汇之后的程序,汇之后的程序,汇 编程序不予处理。编程序不予处理。编程序不予处理。编程序不予处理。(2 2)汇编结束伪指令)汇编结束伪指令)汇编结束伪指令)汇编结束伪指令ENDEND4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令END如:如:如:如: ORGORG2000H2000HSTART: MOVSTART: MOVA, #00HA, #00H END END STARTSTART; ;表示

22、标号表示标号表示标号表示标号STARTSTART开始的开始的开始的开始的程序段结束。程序段结束。程序段结束。程序段结束。 8/27/202412单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录格式:字符名称格式:字符名称格式:字符名称格式:字符名称 EQU EQU 操作数操作数操作数操作数功能:将操作数赋予规定的字符名称。功能:将操作数赋予规定的字符名称。功能:将操作数赋予规定的字符名称。功能:将操作数赋予规定的字符名称。(3 3)等值伪指令)等值伪指令)等值伪指令)等值伪指令EQUEQU4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令EQU如:如:如:如:ABABEQU

23、16HEQU 16HDELYDELYEQU 1234HEQU 1234HMOVMOV A, AB A, ABLCALL DELYLCALL DELY8/27/202413单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录格式:格式:格式:格式: 标号标号标号标号: :DB 8DB 8位二进制数表位二进制数表位二进制数表位二进制数表功功功功能能能能:DBDB指指指指令令令令是是是是在在在在程程程程序序序序存存存存储储储储器器器器(ROMROM)中中中中,从从从从指指指指定定定定的的的的地地地地址址址址单单单单元元元元开开开开始始始始,定定定定义义义义若若若若干干干干个个个个8 8位位

24、位位内内内内存存存存单单单单元元元元的的的的内内内内容容容容。用用用用来来来来在在在在程程程程序序序序存存存存储储储储器器器器的的的的某某某某一一一一部部部部分分分分存存存存入入入入一一一一组组组组8 8位位位位二二二二进进进进制制制制数数数数,或或或或者者者者是是是是将将将将一一一一个个个个数数数数据据据据表表表表格格格格存存存存入入入入程程程程序序序序存存存存储储储储器器器器。这这这这个个个个伪伪伪伪指指指指令令令令在汇编以后,将影响程序存储器的内容。在汇编以后,将影响程序存储器的内容。在汇编以后,将影响程序存储器的内容。在汇编以后,将影响程序存储器的内容。(4 4)定义字节伪指令)定义字

25、节伪指令)定义字节伪指令)定义字节伪指令DBDB4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令DB8/27/202414单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录以上伪指令经汇编以后,将从以上伪指令经汇编以后,将从以上伪指令经汇编以后,将从以上伪指令经汇编以后,将从1010H1010H开始的若干内存单元赋值:开始的若干内存单元赋值:开始的若干内存单元赋值:开始的若干内存单元赋值: (1010H)=20H (1010H)=20H (1011H)=43H (1011H)=43H (1012H)=25H (1012H)=25H (1013H)=FFH (1013H)=FF

26、H其中其中其中其中43H43H是字符是字符是字符是字符C C的的的的ASCIIASCII码,码,码,码,FFHFFH是数值是数值是数值是数值-1-1的补码,的补码,的补码,的补码,十进制数十进制数十进制数十进制数3232也换算为也换算为也换算为也换算为1616进制数进制数进制数进制数20H20H。4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令DB的应用的应用如:如:如:如:ORGORG1010H1010H TAB: TAB:DBDB32, C, 25H, -132, C, 25H, -18/27/202415单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录 标号标号标号标

27、号: :DW 16DW 16位二进制数表位二进制数表位二进制数表位二进制数表功功功功能能能能:DWDW指指指指令令令令是是是是在在在在程程程程序序序序存存存存储储储储器器器器(ROMROM)中中中中,从从从从指指指指定定定定的的的的地地地地址址址址单单单单元元元元开开开开始始始始,定定定定义义义义若若若若干干干干个个个个1616位位位位数数数数据据据据。一一一一个个个个1616位位位位数数数数要要要要占占占占两两两两个个个个存存存存储储储储单单单单元元元元,其其其其中中中中高高高高8 8位位位位存存存存入入入入低低低低地地地地址址址址单单单单元元元元,低低低低8 8位存入高地址单元。位存入高地

28、址单元。位存入高地址单元。位存入高地址单元。例如例如例如例如: :ORGORG 1100H 1100HTABTAB: : DWDW1234H, 0ABH 101234H, 0ABH 10以以以以上上上上伪伪伪伪指指指指令令令令经经经经汇汇汇汇编编编编以以以以后后后后,将将将将对对对对从从从从1100H1100H开开开开始始始始的的的的若若若若干内存单元赋值。干内存单元赋值。干内存单元赋值。干内存单元赋值。(5)定义字伪指令)定义字伪指令DW4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令DW8/27/202416单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录(1100H)

29、=12H(1100H)=12H(1101H)=34H(1101H)=34H(1102H)=00H(1102H)=00H(1103H)=ABH(1103H)=ABH(1104H)=00H(1104H)=00H(1105H)=0AH(1105H)=0AH其数据存储格式如右表所示。其数据存储格式如右表所示。其数据存储格式如右表所示。其数据存储格式如右表所示。DBDB、DWDW伪指令都只对程序存储器(伪指令都只对程序存储器(伪指令都只对程序存储器(伪指令都只对程序存储器(ROMROM)起作用,不起作用,不起作用,不起作用,不能对数据存储器(能对数据存储器(能对数据存储器(能对数据存储器(RAMRAM)

30、的内容进行赋值或进行初始化的内容进行赋值或进行初始化的内容进行赋值或进行初始化的内容进行赋值或进行初始化工作。工作。工作。工作。例如:例如:例如:例如:ORGORG 1100H1100HTABTAB:DW:DW 1234H, 0ABH 101234H, 0ABH 104.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令DW的应用的应用8/27/202417单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录 标号标号标号标号: :DS DS 表达式表达式表达式表达式功能:从指定(标号)地址开始(无标号时从顺序地址功能:从指定(标号)地址开始(无标号时从顺序地址功能:从指定(标号)地

31、址开始(无标号时从顺序地址功能:从指定(标号)地址开始(无标号时从顺序地址开始),开始),开始),开始),保留指定数目(表达式的值)的字节单保留指定数目(表达式的值)的字节单保留指定数目(表达式的值)的字节单保留指定数目(表达式的值)的字节单元作为备用存储区元作为备用存储区元作为备用存储区元作为备用存储区,供程序运行使用(用于程序,供程序运行使用(用于程序,供程序运行使用(用于程序,供程序运行使用(用于程序存储器)。这些单元的初值均为存储器)。这些单元的初值均为存储器)。这些单元的初值均为存储器)。这些单元的初值均为0 0。例如:例如:例如:例如: ORG 2000HORG 2000H TAB

32、: DS TAB: DS 05H 05H经汇编后,从地址经汇编后,从地址经汇编后,从地址经汇编后,从地址2000H2000H开始预留开始预留开始预留开始预留5 5个存储单元。个存储单元。个存储单元。个存储单元。(6 6)定义存储区伪指令)定义存储区伪指令)定义存储区伪指令)定义存储区伪指令DSDS4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令DS8/27/202418单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录字符名称字符名称字符名称字符名称 BIT BIT 位地址位地址位地址位地址功能:功能:功能:功能:将位地址赋给字符名称将位地址赋给字符名称将位地址赋给字符名称将

33、位地址赋给字符名称。例如:例如:例如:例如:S SBITBITP1.0P1.0经汇编后,经汇编后,经汇编后,经汇编后,S S符号的值是符号的值是符号的值是符号的值是P1.0P1.0的地址的地址的地址的地址90H90H。(7 7)位定义伪指令)位定义伪指令)位定义伪指令)位定义伪指令BITBIT4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令BIT8/27/202419单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.1.4 汇编语言程序编辑和汇编汇编语言程序编辑和汇编1 1汇编语言源程序编辑汇编语言源程序编辑汇编语言源程序编辑汇编语言源程序编辑-编写规范编写规范 DATA

34、0DATA0 EQU 30H EQU 30H ; ;将将将将30H30H赋予字符名称赋予字符名称赋予字符名称赋予字符名称DATA0DATA0ORGORG4000H4000H ; ;规定下面程序从规定下面程序从规定下面程序从规定下面程序从4000H4000H单元开始存放单元开始存放单元开始存放单元开始存放MOVMOVR0, #DATA0 R0, #DATA0 ;30HR0;30HR0MOVMOVR1, DATA0 R1, DATA0 ;(30H)R1;(30H)R1CJNECJNER1, #00H, NEXTR1, #00H, NEXT;R1000H,;R1000H,则转则转则转则转NEXTNE

35、XTHERE:HERE: SJMPSJMPHEREHERENEXT:NEXT: CLRCLRA A;0A;0ALOOP:LOOP: INCINCR0R0;(R0)+1R0;(R0)+1R0ADDADDA, R0A, R0;(A)+(R0)A;(A)+(R0)ADJNZDJNZR1, LOOPR1, LOOP;(R1)-1R1,R1 0,;(R1)-1R1,R1 0,则转则转则转则转LOOPLOOPSJMPSJMPHEREHEREENDEND; ;汇编到此结束汇编到此结束汇编到此结束汇编到此结束8/27/202420单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录源程序源程序源程序

36、源程序 地址地址地址地址 目标码目标码目标码目标码DATA0DATA0 EQUEQU30H30HORGORG4000H4000HMOVMOVR0, #DATA0R0, #DATA0 ;4000;400078307830MOVMOVR1, DATA0 R1, DATA0 ;4002;4002A930A930CJNECJNER1, #00H, NEXTR1, #00H, NEXT;4004;4004B90002B90002HERE:HERE: SJMPSJMPHEREHERE ;4007;400780FE80FENEXT:NEXT: CLRCLRA A ;4009;4009E4E4LOOP:LOO

37、P: INCINCR0R0 ;400A;400A0808ADDADDA, R0A, R0 ;400B;400B2626DJNZDJNZR1, LOOPR1, LOOP ;400C;400CD9FCD9FCSJMPSJMPHEREHERE ;400E;400E80F780F7ENDEND2 2汇编语言源程序的汇编汇编语言源程序的汇编汇编语言源程序的汇编汇编语言源程序的汇编4.1.4 汇编语言程序编辑和汇编汇编语言程序编辑和汇编-源程序汇编源程序汇编8/27/202421单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.2 结构化程序设计方法结构化程序设计方法n n在汇编语言程序设

38、计中,普遍采用结构化程序在汇编语言程序设计中,普遍采用结构化程序在汇编语言程序设计中,普遍采用结构化程序在汇编语言程序设计中,普遍采用结构化程序设计方法。采用这种设计方法的主要依据是任设计方法。采用这种设计方法的主要依据是任设计方法。采用这种设计方法的主要依据是任设计方法。采用这种设计方法的主要依据是任何复杂的程序都可由顺序结构、分支结构及循何复杂的程序都可由顺序结构、分支结构及循何复杂的程序都可由顺序结构、分支结构及循何复杂的程序都可由顺序结构、分支结构及循环结构程序等构成。环结构程序等构成。环结构程序等构成。环结构程序等构成。n n每种结构只有一个入口和出口,整个程序也只每种结构只有一个入

39、口和出口,整个程序也只每种结构只有一个入口和出口,整个程序也只每种结构只有一个入口和出口,整个程序也只有一个入口和出口。有一个入口和出口。有一个入口和出口。有一个入口和出口。n n结构程序设计的特点是程序的结构清晰、易于结构程序设计的特点是程序的结构清晰、易于结构程序设计的特点是程序的结构清晰、易于结构程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。下面主要介绍结构化读写和验证、可靠性高。下面主要介绍结构化读写和验证、可靠性高。下面主要介绍结构化读写和验证、可靠性高。下面主要介绍结构化程序设计的基本程序设计方法。程序设计的基本程序设计方法。程序设计的基本程序设计方法。程序设计的基本程

40、序设计方法。-程序结构程序结构8/27/202422单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.2.1 顺序结构程序顺序结构程序例例例例4-14-1 将片内将片内将片内将片内RAMRAM的的的的20H20H单元中的压缩单元中的压缩单元中的压缩单元中的压缩BCDBCD码拆成两个码拆成两个码拆成两个码拆成两个ACSIIACSII码存入码存入码存入码存入21H21H、22H22H单元。低单元。低单元。低单元。低4 4位存在位存在位存在位存在21H21H单元,高单元,高单元,高单元,高4 4位存在位存在位存在位存在22H22H单元。单元。单元。单元。-顺序结构实例顺序结构实例OR

41、GORG2000H2000HMOVMOVA, 20HA, 20HMOVMOVB, #10HB, #10H ; ;除以除以除以除以10H10HDIVDIVABABORLORLB, #30HB, #30H ; ;低低低低4 4位位位位BCDBCD码转换为码转换为码转换为码转换为ASCIIASCII码码码码MOVMOV21H, B21H, BORLORLA, #30HA, #30H ; ;高高高高4 4位位位位BCDBCD码转换为码转换为码转换为码转换为ASCIIASCII码码码码MOVMOV22H, A22H, AENDEND8/27/202423单片机原理与接口技术(第2版).李晓林.电子工业出

42、版社返回目录例例例例4-24-2 设有设有设有设有1616位二进制数存放在内部位二进制数存放在内部位二进制数存放在内部位二进制数存放在内部RAMRAM的的的的50H50H及及及及51H51H单元中,要求将其算术左移一位(即原数各位均单元中,要求将其算术左移一位(即原数各位均单元中,要求将其算术左移一位(即原数各位均单元中,要求将其算术左移一位(即原数各位均向左移向左移向左移向左移1 1位,最低位移入位,最低位移入位,最低位移入位,最低位移入0 0)后仍存放在原单元。)后仍存放在原单元。)后仍存放在原单元。)后仍存放在原单元。试编制相应的程序。试编制相应的程序。试编制相应的程序。试编制相应的程序

43、。4.2.1 顺序结构程序顺序结构程序-顺序结构实例顺序结构实例 ORG 4000HORG 4000HBIHROL: CLR CBIHROL: CLR C ;Cy;Cy清零清零清零清零 MOV A, 51H MOV A, 51H ; ;低低低低8 8位向左环移位向左环移位向左环移位向左环移1 1位位位位 RLC ARLC A MOV 51H, A MOV 51H, A MOV A, 50H MOV A, 50H ; ;高高高高8 8位向左环移位向左环移位向左环移位向左环移1 1位位位位 RLC ARLC A MOV 50H, A MOV 50H, A END END8/27/202424单片机

44、原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.2.2 分支程序分支程序分分分分支支支支程程程程序序序序可可可可根根根根据据据据要要要要求求求求无无无无条条条条件件件件或或或或有有有有条条条条件件件件地地地地改改改改变变变变程程程程序序序序执执执执行行行行流流流流向向向向。编编编编写写写写分分分分支支支支程程程程序序序序主主主主要要要要在在在在于于于于正正正正确确确确使使使使用用用用转转转转移移移移指指指指令令令令。分分分分支支支支程程程程序序序序有有有有:单分支结构、双分支结构、多分支结构(散转)。单分支结构、双分支结构、多分支结构(散转)。单分支结构、双分支结构、多分支结构(散

45、转)。单分支结构、双分支结构、多分支结构(散转)。编写程序,根据编写程序,根据编写程序,根据编写程序,根据x x的值求的值求的值求的值求y y的值,并放回原单元中。的值,并放回原单元中。的值,并放回原单元中。的值,并放回原单元中。-分支结构分支结构例例例例4-34-3 设变量设变量设变量设变量x x以补码形式存放在片内以补码形式存放在片内以补码形式存放在片内以补码形式存放在片内RAMRAM的的的的30H30H单元中,单元中,单元中,单元中,变量变量变量变量y y与与与与x x的关系是:的关系是:的关系是:的关系是:8/27/202425单片机原理与接口技术(第2版).李晓林.电子工业出版社返回

46、目录4.2.2 分支程序分支程序-分支结构实例分支结构实例 ORGORG1000H1000HSTART: MOV A, 30HSTART: MOV A, 30H JZ JZ NEXT ;NEXT ;x x=0,=0,转移转移转移转移 ANL ANL A, #80H ;A, #80H ;保留符号位保留符号位保留符号位保留符号位 JZ JZ ED ;ED ;x x 0 ,0 ,转移转移转移转移MOV MOV A, #05H ;A, #05H ;x x AxA,那那那那么么么么将将将将x x送送送送A A;如如如如果果果果AxAx,那那那那么么么么A A值值值值不不不不变变变变,直直直直到到到到最最

47、最最后后后后一一一一个个个个单单单单元元元元内内内内容容容容与与与与A A比比比比较较较较、操操操操作作作作完完完完毕毕毕毕,则则则则A A中中中中就就就就是是是是该该该该数数数数组组组组中中中中的的的的最最最最大大大大数数数数,这这这这里里里里需需需需要要要要解解解解决决决决如如如如何何何何判判判判别别别别两两两两个个个个带带带带符符符符号号号号数数数数A A和和和和x x的的的的大大大大小小小小。通通通通常常常常可可可可以以以以采采采采用用用用如如如如下下下下的的的的方方方方法法法法:首首首首先先先先判判判判断断断断A A和和和和x x是是是是否否否否同同同同号号号号,若若若若是是是是同同

48、同同号号号号则则则则进进进进行行行行A-XA-X操操操操作作作作,如如如如差差差差00,那那那那么么么么AXAX;如如如如果果果果差差差差00,那那那那么么么么AxAXX(或或或或A A);如为负,则如为负,则如为负,则如为负,则A A(或(或(或(或x x)xx(或(或(或(或A A)。)。)。)。程序如下:程序如下:程序如下:程序如下:-循环结构实例循环结构实例4.2.3 循环程序循环程序8/27/202431单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录-循环结构实例循环结构实例4.2.3 循环程序循环程序 ORGORG 1000H1000HSCMPPMA:SCMPPMA

49、:MOVMOV R0, #20HR0, #20H; ;置取数指针置取数指针置取数指针置取数指针R0R0初值初值初值初值 MOVMOV B, #59HB, #59H; ;置循环计数器置循环计数器置循环计数器置循环计数器B B初值初值初值初值 MOVMOV A, R0A, R0; ;第一个数送第一个数送第一个数送第一个数送A ASCLOOP: SCLOOP: INCINCR0R0; ;修改指针修改指针修改指针修改指针 MOVMOV R1, AR1, A; ;暂存暂存暂存暂存 XRLXRL A, R0A, R0; ;两数符号相同?两数符号相同?两数符号相同?两数符号相同? JBJBACC.7, RE

50、SLATACC.7, RESLAT; ;若相异若相异若相异若相异, ,则转则转则转则转RESLAT:RESLAT:MOVMOV A, R1A, R1; ;若相同若相同若相同若相同, ,则恢复则恢复则恢复则恢复A A中原来值中原来值中原来值中原来值 CLRCLR C C;C;C清零清零清零清零 SUBBSUBBA, R0 ;A, R0 ;两数相减两数相减两数相减两数相减, ,以判断两者的大以判断两者的大以判断两者的大以判断两者的大小小小小8/27/202432单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录-循环结构实例循环结构实例4.2.3 循环程序循环程序 JNB ACC.7,

51、 SMEXT1 JNB ACC.7, SMEXT1 ; ;若若若若A A中值为大中值为大中值为大中值为大, ,则转则转则转则转SMEXT1SMEXT1CXAHER:MOV A, R0 CXAHER:MOV A, R0 ; ;若若若若A A中值为小中值为小中值为小中值为小, ,则将大数送入则将大数送入则将大数送入则将大数送入A A SJMP SMEXT2 SJMP SMEXT2RESLAT: XRL A, R0RESLAT: XRL A, R0 ; ;恢复恢复恢复恢复A A中原值中原值中原值中原值 JNB ACC.7, SMEXT2 JNB ACC.7, SMEXT2 ; ;若若若若A A中值为

52、正中值为正中值为正中值为正, ,侧转侧转侧转侧转SMEXT2SMEXT2 SJMP CXAHER SJMP CXAHER ; ;若若若若A A中值为负中值为负中值为负中值为负, ,则转则转则转则转CXAHERCXAHERSMEXT1: MOV R1,ASMEXT1: MOV R1,A ; ;恢复恢复恢复恢复A A中原值中原值中原值中原值SMEXT2: DJNZ B, SCLOOPSMEXT2: DJNZ B, SCLOOP MOV 1FH, A MOV 1FH, A ; ;最大者送最大者送最大者送最大者送1FH1FH单元单元单元单元 ENDEND8/27/202433单片机原理与接口技术(第2

53、版).李晓林.电子工业出版社返回目录例例例例4-64-6 将内部将内部将内部将内部RAMRAM中起始地址为中起始地址为中起始地址为中起始地址为datadata的数据串传的数据串传的数据串传的数据串传送到外部送到外部送到外部送到外部RAMRAM中起始地址为中起始地址为中起始地址为中起始地址为bufbuf的存储区域的存储区域的存储区域的存储区域内,直到发现内,直到发现内,直到发现内,直到发现“ “$”$”字符停止传送。字符停止传送。字符停止传送。字符停止传送。本例结束条件为找到本例结束条件为找到本例结束条件为找到本例结束条件为找到“ “$”$”停止传送。停止传送。停止传送。停止传送。程序如下:程序

54、如下:程序如下:程序如下:4.2.3 循环程序循环程序-循环结构实例循环结构实例8/27/202434单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.2.3 循环程序循环程序 ORGORG 8000H8000HMOVMOV R0, #DATAR0, #DATA ; ;置源数据区首地址置源数据区首地址置源数据区首地址置源数据区首地址MOVMOV DPTR, #BUF ;DPTR, #BUF ;置目的数据区首地址置目的数据区首地址置目的数据区首地址置目的数据区首地址LOOP0:LOOP0:MOV A, R0MOV A, R0; ;取数据取数据取数据取数据CJNECJNEA, #2

55、4H, LOOP1A, #24H, LOOP1; ;判断是否为判断是否为判断是否为判断是否为$ $字符字符字符字符SJMPSJMPLOOP2LOOP2; ;是是是是$, $,转结束转结束转结束转结束LOOP1:LOOP1:MOVX DPTR, AMOVX DPTR, A; ;不是不是不是不是$, $,执行传送执行传送执行传送执行传送INCINCR0R0 ; ;修改源地址修改源地址修改源地址修改源地址INCINCDPTRDPTR ; ;修改目的地址修改目的地址修改目的地址修改目的地址SJMPSJMPLOOP0LOOP0 ; ;传送下一个数据传送下一个数据传送下一个数据传送下一个数据LOOP2:L

56、OOP2:ENDEND-循环结构实例循环结构实例8/27/202435单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例例例4-74-7 设设设设80318031单片机使用单片机使用单片机使用单片机使用12MHz12MHz晶振(机器周期晶振(机器周期晶振(机器周期晶振(机器周期T T为为为为lsls),),),),试设计延迟试设计延迟试设计延迟试设计延迟100ms100ms的延时程序。的延时程序。的延时程序。的延时程序。4.2.3 循环程序循环程序 ORG4000HDEYPRG:MOV R5, #100 ;置外循环计数器置外循环计数器R5初值为初值为100LOOP1: MOV

57、R6, #200 ;置置2层循环计数器层循环计数器R6初值为初值为200LOOP2: MOV R7, #248 ;置置3层循环计数器层循环计数器R7初值为初值为248LOOP3: DJNZ R7, LOOP3 ;3层循环计数结束否?层循环计数结束否? DJNZ R6, LOOP2 ;2层循环计数结束否?层循环计数结束否? DJNZ R5, LOOP1 ;外循环计数结束否?外循环计数结束否? RET8/27/202436单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录在在在在上上上上例例例例程程程程序序序序中中中中采采采采用用用用了了了了多多多多重重重重循循循循环环环环程程程程序序

58、序序,即即即即在在在在一一一一个个个个循循循循环环环环体体体体中中中中又又又又包包包包含含含含了了了了其其其其他他他他的的的的循循循循环环环环程程程程序序序序,这这这这种种种种方方方方法法法法是是是是实实实实现现现现延延延延时时时时程程程程序序序序的的的的常常常常用用用用方方方方法法法法。使使使使用用用用多多多多重重重重循循循循环环环环时时时时,必必必必须注意以下几点。须注意以下几点。须注意以下几点。须注意以下几点。(1) (1) 循循循循环环环环嵌嵌嵌嵌套套套套,必必必必须须须须层层层层次次次次分分分分明明明明,不不不不允允允允许许许许产产产产生生生生内外层循环交叉;内外层循环交叉;内外层循

59、环交叉;内外层循环交叉;(2) (2) 外外外外循循循循环环环环可可可可以以以以一一一一层层层层层层层层向向向向内内内内循循循循环环环环进进进进入入入入,结结结结束束束束时时时时由里往外一层层退出由里往外一层层退出由里往外一层层退出由里往外一层层退出;(3) (3) 内内内内循循循循环环环环可可可可以以以以直直直直接接接接转转转转入入入入外外外外循循循循环环环环,实实实实现现现现一一一一个个个个循环由多个条件控制的循环结构方式。循环由多个条件控制的循环结构方式。循环由多个条件控制的循环结构方式。循环由多个条件控制的循环结构方式。4.2.3 循环程序循环程序8/27/202437单片机原理与接口

60、技术(第2版).李晓林.电子工业出版社返回目录4.2.4 查表程序查表程序查查查查表表表表程程程程序序序序是是是是一一一一种种种种常常常常用用用用的的的的程程程程序序序序,它它它它广广广广泛泛泛泛使使使使用用用用于于于于LEDLED显显显显示示示示器器器器控控控控制制制制、打打打打印印印印以以以以及及及及数数数数据据据据补补补补偿偿偿偿、计计计计算算算算、转转转转换换换换等等等等功功功功能能能能程程程程序序序序中中中中,具具具具有有有有程程程程序序序序简简简简单单单单、执执执执行行行行速速速速度度度度快快快快等等等等优优优优点点点点。查查查查表表表表,就就就就是是是是根根根根据据据据变变变变量

61、量量量x x在表格中查找在表格中查找在表格中查找在表格中查找y y,使,使,使,使y=y=f f (x)(x)。例例例例4-84-8 试编写程序,将试编写程序,将试编写程序,将试编写程序,将1616进制数转换成进制数转换成进制数转换成进制数转换成ASCIIASCII码。码。码。码。分分分分 析析析析 : 1616进进进进 制制制制 0909的的的的 ASCIIASCII码码码码 为为为为 3039H3039H, AFAF的的的的ASCIIASCII码码码码为为为为41H46H41H46H,ASCIIASCII码码码码表表表表的的的的首首首首地地地地址址址址为为为为ASCTABASCTAB。入口

62、:入口:入口:入口:HEXHEX单元的低四位存放单元的低四位存放单元的低四位存放单元的低四位存放1616进制数。进制数。进制数。进制数。出口:转换后的出口:转换后的出口:转换后的出口:转换后的ASCIIASCII码送回码送回码送回码送回HEXHEX单元。单元。单元。单元。-查表程序查表程序8/27/202438单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录-查表程序查表程序4.2.4 查表程序查表程序 ORGORG0200H0200HHEXHEXEQUEQU33H33HHEXASC:HEXASC:MOVMOVA, HEXA, HEXANLANLA, #0FHA, #0FHMOV

63、MOVDPTR, #ASCTABDPTR, #ASCTABMOVCMOVCA, A+DPTRA, A+DPTRMOVMOVHEX, AHEX, ARETRETASCTAB:ASCTAB:DBDB30H, 31H, 32H, 33H30H, 31H, 32H, 33HDBDB34H, 35H, 36H, 37H34H, 35H, 36H, 37HDBDB38H, 39H, 41H, 42H38H, 39H, 41H, 42HDBDB43H, 44H, 45H, 46H43H, 44H, 45H, 46HENDEND8/27/202439单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目

64、录例例例例4-94-9 设设设设有有有有一一一一个个个个巡巡巡巡回回回回检检检检测测测测报报报报警警警警装装装装置置置置,需需需需对对对对1616路路路路输输输输入入入入进进进进行行行行检检检检测测测测,每每每每路路路路有有有有一一一一个个个个最最最最大大大大允允允允许许许许值值值值,它它它它为为为为双双双双字字字字节节节节。检检检检测测测测时时时时需需需需根根根根据据据据测测测测量量量量的的的的路路路路数数数数,找找找找出出出出该该该该路路路路的的的的最最最最大大大大允允允允许许许许值值值值。再再再再判判判判断断断断输输输输入入入入值值值值是是是是否否否否大大大大于于于于最最最最大大大大允允

65、允允许许许许值值值值,如如如如大大大大于于于于则则则则报报报报警警警警。这这这这里里里里只只只只考考考考虑虑虑虑查查查查找找找找最最最最大值。大值。大值。大值。分析:设分析:设分析:设分析:设x x为路数,放在为路数,放在为路数,放在为路数,放在R2R2中。中。中。中。y y为最大允许值,为最大允许值,为最大允许值,为最大允许值,放在表格中。查表后,最大值放在放在表格中。查表后,最大值放在放在表格中。查表后,最大值放在放在表格中。查表后,最大值放在R3R3、R4R4中。中。中。中。4.2.4 查表程序查表程序-查表程序查表程序8/27/202440单片机原理与接口技术(第2版).李晓林.电子工

66、业出版社返回目录 ORGORG4000H4000HPM1:MOVPM1:MOVA, R2A, R2 ; ;其值范围为其值范围为其值范围为其值范围为00H00H0FH(0FH(如如如如04)04) ADD ADDA, R2A, R2 ;A(R2)2,;A(R2)2,因最大允许值占两个字节因最大允许值占两个字节因最大允许值占两个字节因最大允许值占两个字节( (如如如如08)08) MOV MOVR3, AR3, A;R3(R2)2(;R3(R2)2(如如如如08)08) ADD ADDA, #06HA, #06H; ;加偏移量加偏移量加偏移量加偏移量,( ,(如如如如400CH-4006H=#06

67、H)400CH-4006H=#06H) MOVC MOVC A, A+PC A, A+PC ; ;查第查第查第查第1 1字节字节字节字节( (如地址如地址如地址如地址=400CH+8=4015H)=400CH+8=4015H) XCH XCHA, R3A, R3; ;存第存第存第存第1 1字节字节字节字节( (如如如如33),33),准备取第准备取第准备取第准备取第2 2字节字节字节字节 ADDADDA, #03HA, #03H; ;加偏移量加偏移量加偏移量加偏移量( (如如如如400CH-400CH-400AH+01H=#03H)400AH+01H=#03H) MOVC A, A+PC ;

68、MOVC A, A+PC ;查第查第查第查第2 2字节字节字节字节( (如如如如400AH+0BH=4016H)400AH+0BH=4016H) MOV MOVR4, AR4, A; ;存第存第存第存第2 2字节字节字节字节( (如如如如88)88) RET RETTABI: DWTABI: DW2520, 3721, 4264, 7560, 3388, 3265, 7883, 9943 2520, 3721, 4264, 7560, 3388, 3265, 7883, 9943 ; ;最大值最大值最大值最大值表表表表DWDW1050, 4051, 6785, 8931, 5468, 5871

69、, 3284, 66881050, 4051, 6785, 8931, 5468, 5871, 3284, 66884.2.4 查表程序查表程序-查表程序查表程序8/27/202441单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.2.5 子程序子程序同同同同一一一一个个个个程程程程序序序序中中中中,往往往往往往往往有有有有许许许许多多多多地地地地方方方方都都都都需需需需要要要要执执执执行行行行同同同同样样样样的的的的一一一一项项项项任任任任务务务务,这这这这时时时时可可可可以以以以对对对对这这这这项项项项任任任任务务务务进进进进行行行行独独独独立立立立的的的的编编编编写写写

70、写,形形形形成成成成一一一一个个个个子子子子程程程程序序序序。在在在在原原原原来来来来的的的的主主主主程程程程序序序序中中中中需需需需要要要要执执执执行行行行该该该该任任任任务务务务时时时时,调调调调用用用用该该该该子子子子程程程程序序序序,执执执执行行行行完完完完后后后后又又又又返返返返回回回回主主主主程程程程序序序序,继继继继续续续续以以以以后后后后的的的的操操操操作作作作,这这这这就就就就是是是是所所所所谓谓谓谓的的的的子子子子程程程程序序序序结结结结构构构构。在在在在程程程程序序序序设设设设计计计计过过过过程程程程中中中中,适适适适当当当当地地地地使使使使用用用用子子子子程程程程序序序

71、序具具具具有有有有以以以以下下下下优点:优点:优点:优点:1) 1) 不必重复编写同样的程序,提高了编码的效率。不必重复编写同样的程序,提高了编码的效率。不必重复编写同样的程序,提高了编码的效率。不必重复编写同样的程序,提高了编码的效率。2) 2) 缩缩缩缩短短短短了了了了源源源源程程程程序序序序和和和和目目目目标标标标程程程程序序序序的的的的长长长长度度度度,节节节节省省省省了了了了程程程程序序序序存存存存储储储储器的空间。器的空间。器的空间。器的空间。3) 3) 使程序模块化、通用化,便于阅读、交流和共享。使程序模块化、通用化,便于阅读、交流和共享。使程序模块化、通用化,便于阅读、交流和共

72、享。使程序模块化、通用化,便于阅读、交流和共享。4) 4) 便于分块调试。便于分块调试。便于分块调试。便于分块调试。-子程序子程序8/27/202442单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录在子程序调用过程中须解决以下两个方面的问题:在子程序调用过程中须解决以下两个方面的问题:在子程序调用过程中须解决以下两个方面的问题:在子程序调用过程中须解决以下两个方面的问题:1) 1) 保护现场和恢复现场。保护现场和恢复现场。保护现场和恢复现场。保护现场和恢复现场。2) 2) 调用程序与被调用程序之间的参数传递。调用程序与被调用程序之间的参数传递。调用程序与被调用程序之间的参数传递

73、。调用程序与被调用程序之间的参数传递。n n保护现场和恢复现场保护现场和恢复现场保护现场和恢复现场保护现场和恢复现场方方方方法法法法就就就就是是是是在在在在进进进进入入入入子子子子程程程程序序序序时时时时,将将将将需需需需要要要要保保保保护护护护的的的的数数数数据据据据推推推推入入入入堆堆堆堆栈栈栈栈,而而而而空空空空出出出出这这这这些些些些数数数数据据据据所所所所占占占占用用用用的的的的工工工工作作作作单单单单元元元元,供供供供子子子子程程程程序序序序中中中中使使使使用用用用。在在在在返返返返回回回回调调调调用用用用程程程程序序序序之之之之前前前前,再再再再将将将将推推推推入入入入堆堆堆堆栈

74、栈栈栈的的的的数数数数据据据据弹弹弹弹出出出出到到到到原原原原有有有有的的的的工工工工作作作作单单单单元元元元,恢恢恢恢复复复复其其其其原原原原来来来来的的的的状状状状态态态态,使使使使调调调调用用用用程程程程序序序序可可可可以以以以继继继继续续续续往往往往下下下下执行。执行。执行。执行。 4.2.5 子程序子程序-子程序子程序8/27/202443单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录n n参数传递参数传递参数传递参数传递子子子子程程程程序序序序调调调调用用用用时时时时,要要要要特特特特别别别别注注注注意意意意主主主主程程程程序序序序与与与与子子子子程程程程序序序序之

75、之之之间间间间的的的的信信信信息息息息交交交交换换换换问问问问题题题题。在在在在调调调调用用用用一一一一个个个个子子子子程程程程序序序序时时时时,主主主主程程程程序序序序应应应应先先先先把把把把有有有有关关关关参参参参数数数数(子子子子程程程程序序序序入入入入口口口口条条条条件件件件)放放放放到到到到某某某某些些些些约约约约定定定定的的的的位位位位置置置置,子子子子程程程程序序序序在在在在运运运运行行行行时时时时,可可可可以以以以从从从从约约约约定定定定的的的的位位位位置置置置得得得得到到到到有有有有关关关关参参参参数数数数。同同同同样样样样子子子子程程程程序序序序结结结结束束束束前前前前,也

76、也也也应应应应把把把把处处处处理理理理结结结结果果果果(出出出出口口口口条条条条件件件件)送送送送到到到到约约约约定定定定位位位位置置置置。返返返返回回回回后后后后,主主主主程程程程序序序序便便便便可可可可从从从从这这这这些些些些位位位位置置置置得得得得到到到到需需需需要的结果,这就是参数传递。要的结果,这就是参数传递。要的结果,这就是参数传递。要的结果,这就是参数传递。4.2.5 子程序子程序-参数传递参数传递8/27/202444单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录参数传递大致可分为以下几种方法:参数传递大致可分为以下几种方法:参数传递大致可分为以下几种方法:参数

77、传递大致可分为以下几种方法:1) 1) 传传传传递递递递数数数数据据据据 将将将将数数数数据据据据通通通通过过过过工工工工作作作作寄寄寄寄存存存存器器器器R0R7R0R7和和和和累累累累加加加加器器器器来来来来传传传传送送送送。即即即即主主主主程程程程序序序序和和和和子子子子程程程程序序序序在在在在交交交交接接接接处处处处,通通通通过过过过上上上上述寄存器和累加器存储同一参数。述寄存器和累加器存储同一参数。述寄存器和累加器存储同一参数。述寄存器和累加器存储同一参数。2) 2) 传传传传送送送送地地地地址址址址 数数数数据据据据存存存存放放放放在在在在数数数数据据据据存存存存储储储储器器器器中中

78、中中,参参参参数数数数传传传传递递递递时只通过时只通过时只通过时只通过R0R0、R1R1或或或或DPTRDPTR传递数据所存放的地址。传递数据所存放的地址。传递数据所存放的地址。传递数据所存放的地址。3) 3) 通通通通过过过过堆堆堆堆栈栈栈栈传传传传递递递递参参参参数数数数 在在在在调调调调用用用用之之之之前前前前,先先先先把把把把要要要要传传传传送送送送的的的的参参参参数数数数压压压压入入入入堆堆堆堆栈栈栈栈,进进进进入入入入子子子子程程程程序序序序之之之之后后后后,再再再再将将将将压压压压入入入入堆堆堆堆栈栈栈栈的参数弹出到工作寄存器或者其他内存单元。的参数弹出到工作寄存器或者其他内存单

79、元。的参数弹出到工作寄存器或者其他内存单元。的参数弹出到工作寄存器或者其他内存单元。4.2.5 子程序子程序-参数传递参数传递8/27/202445单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例例例4-104-10 试编写程序,计算试编写程序,计算试编写程序,计算试编写程序,计算分分分分析析析析:a1a1、a2a2、. .、a10a10存存存存放放放放在在在在内内内内部部部部RAMRAM的的的的20H20H开开开开始始始始的的的的存存存存储储储储区区区区域域域域内内内内,计计计计算算算算所所所所得得得得结结结结果果果果存存存存放放放放在在在在R3R3、R2R2中中中中。要要

80、要要求求求求:平平平平方方方方运运运运算算算算编编编编写写写写成成成成子子子子程程程程序序序序SORTSORT,主主主主程程程程序序序序通通通通过过过过调调调调用用用用SORTSORT并并并并求和完成运算。参数的传递用累加器。求和完成运算。参数的传递用累加器。求和完成运算。参数的传递用累加器。求和完成运算。参数的传递用累加器。4.2.5 子程序子程序-子程序应用子程序应用8/27/202446单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录ORGORG8000H8000HMAIN: MAIN: MOVMOVR0, #20HR0, #20H; ;置数据指针置数据指针置数据指针置数据

81、指针MOVMOVR7, #10R7, #10; ;置计数初值置计数初值置计数初值置计数初值MOVMOVR3, #0R3, #0; ;结果单元清零结果单元清零结果单元清零结果单元清零MOVMOVR2, #0R2, #0LOOP: LOOP: MOVMOVA, R0A, R0; ;取数取数取数取数ACALLACALLSORTSORT; ;调用求平方子程序调用求平方子程序调用求平方子程序调用求平方子程序ADDADDA, R2A, R2; ;累加平方和累加平方和累加平方和累加平方和MOVMOVR2, AR2, AADDCADDCA, #0 A, #0 ; ;加进位加进位加进位加进位CyCyINCINC

82、R0R0 ; ;修改指针修改指针修改指针修改指针DJNZDJNZR7, LOOPR7, LOOP; ;未完未完未完未完, ,继续继续继续继续4.2.5 子程序子程序-子程序应用子程序应用8/27/202447单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录 SJMPSJMPENENSORT: MOVSORT: MOVDPTR, #TAB ;DPTR, #TAB ;进入子程序查平方表进入子程序查平方表进入子程序查平方表进入子程序查平方表 MOVCMOVCA, A+DPTRA, A+DPTR RET RET ; ;返主程序返主程序返主程序返主程序TAB:TAB: DB DB0, 1,

83、 4, 9, 160, 1, 4, 9, 16 DB DB25, 36, 49, 64, 8125, 36, 49, 64, 81EN:EN: NOP NOP END END4.2.5 子程序子程序-子程序应用子程序应用8/27/202448单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例例例4-114-11 设设设设有有有有5050个个个个用用用用ASCIIASCII码码码码表表表表示示示示的的的的1616进进进进制制制制数数数数存存存存放放放放在在在在内内内内部部部部RAMRAM以以以以30H30H为为为为首首首首址址址址的的的的连连连连续续续续单单单单元元元元中中中中。

84、要要要要求求求求将将将将其其其其转转转转换换换换成成成成相相相相应应应应的的的的1616进进进进制制制制数数数数并并并并存存存存放放放放到到到到外外外外部部部部RAMRAM以以以以4100H4100H为为为为首首首首址址址址的的的的2525个个个个连连连连续续续续单单单单元元元元中中中中。根根根根据据据据上上上上述述述述要要要要求求求求,使使使使用用用用堆堆堆堆栈栈栈栈传传传传递递递递参参参参数数数数的的的的方方方方法法法法编写程序。编写程序。编写程序。编写程序。4.2.5 子程序子程序-子程序应用子程序应用8/27/202449单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录

85、ORG 4000HORG 4000HMAIASH: MOV R0, #2FHMAIASH: MOV R0, #2FH; ;置取数指针置取数指针置取数指针置取数指针R0R0初值初值初值初值, ,从从从从30H30H开始开始开始开始 MOV DPTR, #40FFHMOV DPTR, #40FFH; ;置数据指针置数据指针置数据指针置数据指针DPTRDPTR MOV SP, #20H MOV SP, #20H; ;置堆栈指针置堆栈指针置堆栈指针置堆栈指针SPSP初值初值初值初值 MOV R2, #19HMOV R2, #19H; ;置循环计数器置循环计数器置循环计数器置循环计数器R2R2初值为初值

86、为初值为初值为2525NELOOP: INC R0;NELOOP: INC R0;修改修改修改修改R0R0 INC DPTR INC DPTR; ;修改修改修改修改DPTRDPTR指下一个指下一个指下一个指下一个 MOV A, R0MOV A, R0; ;取被转换的取被转换的取被转换的取被转换的ASCIIASCII码并压入堆栈码并压入堆栈码并压入堆栈码并压入堆栈 PUSH ACCPUSH ACC ACALL SUBASH ACALL SUBASH; ;调用调用调用调用SUBASHSUBASH子程序子程序子程序子程序 POP 1FHPOP 1FH; ;相应的相应的相应的相应的1616进制数送进制

87、数送进制数送进制数送1FH1FH单元单元单元单元4.2.5 子程序子程序-子程序应用子程序应用8/27/202450单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录 INCINCR0R0; ;修改修改修改修改R0R0 MOV MOVA, R0A, R0; ;取被转换的取被转换的取被转换的取被转换的ASCIIASCII码并压入堆栈码并压入堆栈码并压入堆栈码并压入堆栈 PUSHPUSHACCACC ACALL ACALLSUBASHSUBASH; ;调用调用调用调用SUBASHSUBASH子程序子程序子程序子程序 POPPOPACCACC; ;相应的相应的相应的相应的1616进制数送

88、进制数送进制数送进制数送A A SWAP SWAPA A; ;作为高作为高作为高作为高4 4位位位位 ORLORLA, 1FHA, 1FH; ;合成两位合成两位合成两位合成两位1616进制数进制数进制数进制数 MOVXMOVXDPTR, ADPTR, A; ;送存数单元送存数单元送存数单元送存数单元 DJNZDJNZR2, NELOOPR2, NELOOP; ;转换结束否?若未完转换结束否?若未完转换结束否?若未完转换结束否?若未完, ,则继续则继续则继续则继续 SJMPSJMPENENSUBASH: MOVSUBASH: MOVR0, SPR0, SP;SP;SP值不能改变值不能改变值不能改

89、变值不能改变, ,否则不能正确返回否则不能正确返回否则不能正确返回否则不能正确返回4.2.5 子程序子程序-子程序应用子程序应用8/27/202451单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录 DEC R0DEC R0 DEC R0 DEC R0 XCH A, R0 XCH A, R0 ; ;从堆栈取出被转换的数送从堆栈取出被转换的数送从堆栈取出被转换的数送从堆栈取出被转换的数送A A CLR C CLR C SUBB A, #3AH SUBB A, #3AH ; ;为为为为0 09 9的的的的ASCIIASCII码否?小于码否?小于码否?小于码否?小于3AH3AH?共减?

90、共减?共减?共减30H30H JC JC ASCDTG ASCDTG ; ;若是小于若是小于若是小于若是小于, ,则转则转则转则转ASCDTGASCDTG SUBB A, #07H SUBB A, #07H ; ;若否若否若否若否, ,则再减去则再减去则再减去则再减去7,(A)-3AH-7H+0AH=(A)-37H7,(A)-3AH-7H+0AH=(A)-37HASCDTG: ADD A, #0AH ;ASCDTG: ADD A, #0AH ;转换成转换成转换成转换成1616进制数进制数进制数进制数, , XCH A, R0 ; XCH A, R0 ;转换后的转换后的转换后的转换后的1616进

91、制数压入堆栈进制数压入堆栈进制数压入堆栈进制数压入堆栈 RETRETEN:EN: NOP NOP END END4.2.5 子程序子程序-子程序应用子程序应用8/27/202452单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例例例4-12 4-12 将将将将内内内内部部部部RAMRAM的的的的20H20H单单单单元元元元中中中中的的的的1 1字字字字节节节节1616进进进进制制制制数数数数转转转转换换换换为为为为两两两两位位位位ASCIIASCII码码码码,存存存存放放放放在在在在30H30H和和和和31H31H两个单元中。两个单元中。两个单元中。两个单元中。分分分分析析析

92、析: 将将将将转转转转换换换换ASCIIASCII码码码码的的的的运运运运算算算算编编编编写写写写成成成成子子子子程程程程序序序序HEASCHEASC,主主主主程程程程序序序序通通通通过过过过调调调调用用用用HEASCHEASC完完完完成成成成数据转换。通过堆栈传递参数。数据转换。通过堆栈传递参数。数据转换。通过堆栈传递参数。数据转换。通过堆栈传递参数。4.2.5 子程序子程序-子程序应用子程序应用8/27/202453单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录 ORG 8000HORG 8000HMAIN: MOV SP, #40HMAIN: MOV SP, #40H;

93、;建立堆栈指针建立堆栈指针建立堆栈指针建立堆栈指针 MOV R0, #30HMOV R0, #30H ; ;置结果单元指针置结果单元指针置结果单元指针置结果单元指针 MOV A, 20HMOV A, 20H; ;将将将将1 1字节字节字节字节1616进制数的地址送进制数的地址送进制数的地址送进制数的地址送A A SWAP A SWAP A;1;1字节字节字节字节1616进制数高、低进制数高、低进制数高、低进制数高、低4 4位交换位交换位交换位交换 PUSH ACCPUSH ACC; ;参数压栈参数压栈参数压栈参数压栈 ACALL HEASCACALL HEASC; ;调转换子程序调转换子程序调

94、转换子程序调转换子程序HEASCHEASC POP POP ACC ACC; ;弹出结果弹出结果弹出结果弹出结果 MOV R0, AMOV R0, A; ;存高位存高位存高位存高位1616进制数转换结果进制数转换结果进制数转换结果进制数转换结果 INCINC R0 R0; ;修改指针修改指针修改指针修改指针 PUSH 20HPUSH 20H; ;参数压栈参数压栈参数压栈参数压栈 ACALL HEASCACALL HEASC; ;调转换子程序调转换子程序调转换子程序调转换子程序HEASCHEASC POP POP ACC ACC; ;弹出结果弹出结果弹出结果弹出结果 MOV R0, AMOV R

95、0, A; ;存低位存低位存低位存低位1616进制数转换结果进制数转换结果进制数转换结果进制数转换结果 SJMP ENSJMP EN4.2.5 子程序子程序-子程序应用子程序应用8/27/202454单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录HEASC: MOV R1, SPHEASC: MOV R1, SP ; ;堆栈指针送堆栈指针送堆栈指针送堆栈指针送R1R1 DEC R1 DEC R1 DEC R1 DEC R1 ;R1 ;R1指向被转换数据指向被转换数据指向被转换数据指向被转换数据 XCH A, R1XCH A, R1 ; ;取被转换数据取被转换数据取被转换数据取被

96、转换数据 ANL A, #0FHANL A, #0FH ; ;取一位取一位取一位取一位1616进制数进制数进制数进制数 ADD A, #2ADD A, #2 ; ;修正修正修正修正ASCIIASCII码表的首地址码表的首地址码表的首地址码表的首地址 MOVC A, A+PC ;MOVC A, A+PC ;查表取对应的查表取对应的查表取对应的查表取对应的ASCIIASCII码码码码 XCH A, R1XCH A, R1 ; ;结果存放在堆栈区结果存放在堆栈区结果存放在堆栈区结果存放在堆栈区 RETRET ; ;取出断点取出断点取出断点取出断点, ,返主程序返主程序返主程序返主程序ASCTAB:

97、DB 30H, 31H, 32H, 33H, 34H, 35H, 36H, 37HASCTAB: DB 30H, 31H, 32H, 33H, 34H, 35H, 36H, 37H DB 38H, 39H, 40H, 41H, 42H, 43H, 44H, 45H DB 38H, 39H, 40H, 41H, 42H, 43H, 44H, 45HEN:EN: NOP NOP END MAIN END MAIN4.2.5 子程序子程序-子程序应用子程序应用8/27/202455单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.3 汇编语言程序设计实例汇编语言程序设计实例例例例例4

98、-134-13 多字节无符号数加法运算程序。多字节无符号数加法运算程序。多字节无符号数加法运算程序。多字节无符号数加法运算程序。编程说明:多字节运算一般是按照从低字节到编程说明:多字节运算一般是按照从低字节到编程说明:多字节运算一般是按照从低字节到编程说明:多字节运算一般是按照从低字节到高字节的顺序依次进行的。高字节的顺序依次进行的。高字节的顺序依次进行的。高字节的顺序依次进行的。入口:入口:入口:入口:R0R0被加数低位地址指针;被加数低位地址指针;被加数低位地址指针;被加数低位地址指针;R1R1加数低位地址指针;加数低位地址指针;加数低位地址指针;加数低位地址指针;R2R2字节数。字节数。

99、字节数。字节数。出口:出口:出口:出口:R0R0和数高位地址指针。和数高位地址指针。和数高位地址指针。和数高位地址指针。4.3.1 4.3.1 算术运算程序算术运算程序算术运算程序算术运算程序8/27/202456单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4.3 汇编语言程序设计实例汇编语言程序设计实例-算术运算程序算术运算程序ADDBIN: CLR CLOOP1: MOV A, R0;取被加数取被加数 ADDC A, R1;两数相加两数相加,带进位带进位 MOV R0, A INC R0 INC R1 DJNZ R2, LOOP1;未加完转未加完转LOOP1 JNC LO

100、OP2;无进位转无进位转LOOP2 MOV R0, #01H RETLOOP2: DEC R0 RET8/27/202457单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例例例4-144-14 实现下列两位实现下列两位实现下列两位实现下列两位1616进制数乘法运算程序。进制数乘法运算程序。进制数乘法运算程序。进制数乘法运算程序。 (R7R6R7R6)1616 (R5R4R5R4)1616(R3R2R1R0R3R2R1R0)1616编程说明编程说明编程说明编程说明:MCS-51MCS-51乘法指令只能完成两个乘法指令只能完成两个乘法指令只能完成两个乘法指令只能完成两个8 8位无

101、符位无符位无符位无符号数相乘,因此号数相乘,因此号数相乘,因此号数相乘,因此1616位无符号数求积必须位无符号数求积必须位无符号数求积必须位无符号数求积必须将它们分解成将它们分解成将它们分解成将它们分解成8 8位数相乘来实现。其方位数相乘来实现。其方位数相乘来实现。其方位数相乘来实现。其方法有法有法有法有“ “先乘后加先乘后加先乘后加先乘后加” ”和和和和“ “边乘边加边乘边加边乘边加边乘边加” ”两种。两种。两种。两种。现以现以现以现以“ “边乘边加边乘边加边乘边加边乘边加” ”为例设计。为例设计。为例设计。为例设计。程序如下:程序如下:程序如下:程序如下:4.3 汇编语言程序设计实例汇编语

102、言程序设计实例-算术运算程序算术运算程序8/27/202458单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例例例4-14 4-14 乘法运算程序乘法运算程序乘法运算程序乘法运算程序 ORGORG 1000H 1000HDMUL: MOV A, R6DMUL: MOV A, R6 ; ;第第第第1 1个因数的低位送个因数的低位送个因数的低位送个因数的低位送A A MOV B, R4 MOV B, R4 ; ;第第第第2 2个因数的低位送个因数的低位送个因数的低位送个因数的低位送B B MUL AB MUL AB ; ;第第第第1 1个因数的低位乘以第个因数的低位乘以第个因数的

103、低位乘以第个因数的低位乘以第2 2个因数的低位个因数的低位个因数的低位个因数的低位 MOV R0, AMOV R0, A ; ;积的低位送积的低位送积的低位送积的低位送R0R0 MOV R1, B MOV R1, B ; ;积的高位送积的高位送积的高位送积的高位送R1R1 MOV A, R7 MOV A, R7 ; ;第第第第1 1个因数的高位送个因数的高位送个因数的高位送个因数的高位送A A MOV B, R4 MOV B, R4 ; ;第第第第2 2个因数的低位送个因数的低位送个因数的低位送个因数的低位送B B MUL AB MUL AB ; ;第第第第1 1个因数的高位乘以第个因数的高位

104、乘以第个因数的高位乘以第个因数的高位乘以第2 2个因数的低位个因数的低位个因数的低位个因数的低位 ADD A, R1ADD A, R1 ; ;部分积相加部分积相加部分积相加部分积相加, ,形成进位形成进位形成进位形成进位CyCy MOV R1, A MOV R1, A ; ;部分积相加送部分积相加送部分积相加送部分积相加送R1R1 MOV A, B MOV A, B ; ;部分积的进位部分积的进位部分积的进位部分积的进位CyCy加到高位加到高位加到高位加到高位 ADDC A, #00HADDC A, #00H MOV R2, A MOV R2, A MOV A, R6 ; MOV A, R6

105、;第第第第1 1个因数的低位送个因数的低位送个因数的低位送个因数的低位送A A MOV B, R5 ; MOV B, R5 ;第第第第2 2个因数的高位送个因数的高位送个因数的高位送个因数的高位送B BMUL AB ;MUL AB ;第第第第1 1个因数的低位乘以第个因数的低位乘以第个因数的低位乘以第个因数的低位乘以第2 2个因数的高位个因数的高位个因数的高位个因数的高位(R7R6R7R6)1616(R5R4R5R4)1616(R3R2R1R0R3R2R1R0)1 16 68/27/202459单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录ADD A, R1 ADD A, R1

106、 ; ;部分积相加部分积相加部分积相加部分积相加, ,形成进位形成进位形成进位形成进位CyCyMOV R1, A MOV R1, A ; ;回送部分积回送部分积回送部分积回送部分积MOV A, R2MOV A, R2 ADDC A, B ADDC A, B ; ;部分积相加部分积相加部分积相加部分积相加MOV R2, A MOV R2, A ; ;回送部分积回送部分积回送部分积回送部分积MOV A, #00H MOV A, #00H ; ;部分积的进位部分积的进位部分积的进位部分积的进位CyCy加到高位加到高位加到高位加到高位ADDC A, #00HADDC A, #00HMOV R3, AM

107、OV R3, AMOV A, R7MOV A, R7; ;第第第第1 1个因数的高位送个因数的高位送个因数的高位送个因数的高位送A AMOV B, R5MOV B, R5; ;第第第第2 2个因数的高位送个因数的高位送个因数的高位送个因数的高位送B BMUL ABMUL AB; ;第第第第1 1个因数的高位乘以第个因数的高位乘以第个因数的高位乘以第个因数的高位乘以第2 2个因数的高位个因数的高位个因数的高位个因数的高位ADD A, R2ADD A, R2; ;部分积相加部分积相加部分积相加部分积相加, ,形成进位形成进位形成进位形成进位CyCyMOV R2, AMOV R2, A; ;回送部分

108、积回送部分积回送部分积回送部分积MOV A, R3MOV A, R3ADDC A, BADDC A, B; ;部分积相加部分积相加部分积相加部分积相加MOV R3, AMOV R3, A; ;回送部分积回送部分积回送部分积回送部分积RETRETENDEND(R7R6R7R6)1616(R5R4R5R4)1616(R3R2R1R0R3R2R1R0)1 16 6例例例例4-14 4-14 乘法运算程序乘法运算程序乘法运算程序乘法运算程序8/27/202460单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例例例4-154-15 双字节无符号数除法运算程序。双字节无符号数除法运算程序

109、。双字节无符号数除法运算程序。双字节无符号数除法运算程序。编程说明:本程序采用移位除法的方法,实现双字编程说明:本程序采用移位除法的方法,实现双字编程说明:本程序采用移位除法的方法,实现双字编程说明:本程序采用移位除法的方法,实现双字节无符号数相除,并考虑四舍五入。节无符号数相除,并考虑四舍五入。节无符号数相除,并考虑四舍五入。节无符号数相除,并考虑四舍五入。入口:入口:入口:入口:R5(R5(高高高高) )、R4(R4(低低低低) ),被除数;,被除数;,被除数;,被除数;R3(R3(高高高高) )、R2(R2(低低低低) ),非零除数。,非零除数。,非零除数。,非零除数。出口:出口:出口:

110、出口:R5(R5(高高高高) )、R4(R4(低低低低) ),商;,商;,商;,商;R7(R7(高高高高) )、R6(R6(低低低低) ),余数。,余数。,余数。,余数。程序清单如下:程序清单如下:程序清单如下:程序清单如下:4.3 汇编语言程序设计实例汇编语言程序设计实例-算术运算程序算术运算程序8/27/202461单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录BINDIV: CLR A ;BINDIV: CLR A ;部分余数部分余数部分余数部分余数 单元清零单元清零单元清零单元清零 MOV R7, AMOV R7, A MOV R6, A MOV R6, A MOV R

111、0, 10H ; MOV R0, 10H ;除法除法除法除法 移位次数移位次数移位次数移位次数LP: CLR CLP: CLR C ; ;移位移位移位移位 MOV A, R4MOV A, R4 RLC A RLC A MOV R4, A MOV R4, A MOV A, R5 MOV A, R5 RLC A RLC A MOV R5, A MOV R5, A MOV A, R6 MOV A, R64.3 汇编语言程序设计实例汇编语言程序设计实例-算术运算程序算术运算程序 RLC ARLC A MOV R6, A MOV R6, A MOV A, R7 MOV A, R7 RLC A RLC A

112、 MOV R7, A MOV R7, ALP1: MOV A, R6LP1: MOV A, R6 ; ;部分余部分余部分余部分余 数减除数数减除数数减除数数减除数 SUBB A, R2SUBB A, R2 MOV R1, A MOV R1, A MOV A, R7 MOV A, R7 SUBB A, R3 SUBB A, R3 JC SMALL JC SMALL MOV A, R1 MOV A, R18/27/202462单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录 MOV R6, AMOV R6, A INC INC R4 R4 ; ;商加商加商加商加1 1 SJMP LP

113、1 SJMP LP1SMALL: DJNZ R0, LPSMALL: DJNZ R0, LP MOV 20H, R7 MOV 20H, R7 ; ;四舍五入四舍五入四舍五入四舍五入 JBJB 07H, ADD1 07H, ADD1 CLR CLR C C MOV A, R6 MOV A, R6 RLC RLC A A MOV R6, A MOV R6, A MOV A, R7 MOV A, R7 RLC RLC A A SUBB A, R3 SUBB A, R34.3 汇编语言程序设计实例汇编语言程序设计实例-算术运算程序算术运算程序 JCJC RETURN RETURN JNZ ADD1 J

114、NZ ADD1 MOV A, R6 MOV A, R6 SUBB A, R2 SUBB A, R2 JC JC RETURN RETURN ADD1: MOV A, R4 ADD1: MOV A, R4 ; ;商加商加商加商加1 1 ADD A, #01H ADD A, #01H MOV R4, A MOV R4, A MOV A, R5 MOV A, R5 ADDC A, #00H ADDC A, #00H MOV R5, A MOV R5, ARETURN: RETRETURN: RET8/27/202463单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例例例4-16 4

115、-16 双字节双字节双字节双字节BCDBCD码十进制乘法程序。码十进制乘法程序。码十进制乘法程序。码十进制乘法程序。编程说明:从乘数高位开始进行编程说明:从乘数高位开始进行编程说明:从乘数高位开始进行编程说明:从乘数高位开始进行BCDBCD码移位乘法。码移位乘法。码移位乘法。码移位乘法。入口:入口:入口:入口:R1(R1(高高高高) )和和和和R0(R0(低低低低) ),被乘数;,被乘数;,被乘数;,被乘数; R3(R3(高高高高) )和和和和R2(R2(低低低低) ),乘数。,乘数。,乘数。,乘数。出口:出口:出口:出口:R7(R7(最高最高最高最高) ),R6R6,R5R5,R4(R4(最

116、低最低最低最低) ),BCDBCD码形码形码形码形式的积。式的积。式的积。式的积。程序(略)程序(略)程序(略)程序(略)4.3 汇编语言程序设计实例汇编语言程序设计实例-算术运算程序算术运算程序8/27/202464单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例4-17 数数据据排排序序程程序序。设设在在外外部部RAM的的4200H数数据据缓缓冲冲区区内内存存放放一一无无符符号号数数数数组组,其其长长度度为为100,起起始始地地址址为为4200H。要要求求将将它它们们按按从从大大到到小小顺顺序序排排列列,排排序序后后存存放放在在原原数数据据缓缓冲冲区区中中,试试编编写写相

117、相应应的的程程序。序。程序(略)程序(略)4.3 汇编语言程序设计实例汇编语言程序设计实例-算术运算程序算术运算程序8/27/202465单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例例例4-184-18 将将将将双双双双字字字字节节节节二二二二进进进进制制制制数数数数转转转转换换换换成成成成BCDBCD码码码码(十十十十进进进进制制制制数数数数)。编程说明:将二进制数转换成编程说明:将二进制数转换成编程说明:将二进制数转换成编程说明:将二进制数转换成BCDBCD码的数学模型为码的数学模型为码的数学模型为码的数学模型为 ( (a a1515a a1414a a1 1a a0

118、)2 =0)2 = ( (a a15215 + 15215 + a a14214+ + 14214+ + a a1 21 + 1 21 + a a020)10020)10上式右侧即为欲求的上式右侧即为欲求的上式右侧即为欲求的上式右侧即为欲求的BCDBCD码。它可作如下变换:码。它可作如下变换:码。它可作如下变换:码。它可作如下变换: ( (a a15214 + 15214 + a a14213 + + 14213 + + a a1)2 + 1)2 + a a0 0程序(略)程序(略)程序(略)程序(略)4.3 汇编语言程序设计实例汇编语言程序设计实例-数制转换程序数制转换程序8/27/2024

119、66单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例4-19 BCD数转换成二进制数(双字节整数转换成二进制数(双字节整数)。数)。入口:入口: R5(千位、百位)和(千位、百位)和R4(十位、个(十位、个位)为位)为BCD码。码。出口:出口: R5R4(16位无符号二进制整数)。位无符号二进制整数)。程序(略)程序(略)4.3 汇编语言程序设计实例汇编语言程序设计实例-数制转换程序数制转换程序8/27/202467单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例4-20 4位二进制数转换为位二进制数转换为ASCII码。码。编编程程说说明明:由由ASCII编

120、编码码表表可可知知转转换换方方法法。若若4位位二二进进制制数数小小于于10,则则此此二二进进制制数数加加上上30H,若若大大于于10(等等于于10),则加上),则加上37H。入口:入口: R2 = 4位二进制数。位二进制数。出口:出口: R2 = 转换后的转换后的ASCII码。码。程序(略)程序(略)4.3 汇编语言程序设计实例汇编语言程序设计实例-数制转换程序数制转换程序8/27/202468单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例4-21 ASCII码转换为码转换为4位二进制数,本位二进制数,本程序完成的是上例的逆过程。程序完成的是上例的逆过程。入口:入口:R2

121、= ASCII码。码。出口:出口:R2 = 转换后的二进制数。转换后的二进制数。程序(略)程序(略)4.3 汇编语言程序设计实例汇编语言程序设计实例-数制转换程序数制转换程序8/27/202469单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录例例例例4-22 4-22 设设设设某某某某智智智智能能能能温温温温度度度度测测测测量量量量仪仪仪仪采采采采用用用用8 8位位位位ADCADC,测测测测量量量量范范范范围围围围为为为为1010100100,仪仪仪仪器器器器采采采采样样样样并并并并经经经经滤滤滤滤波波波波和和和和非非非非线线线线性性性性校校校校正正正正后后后后(即即即即温温温

122、温度度度度与与与与数数数数字字字字量量量量之之之之间间间间的的的的关关关关系系系系已已已已为为为为线线线线性性性性)的数字量为的数字量为的数字量为的数字量为28H28H。那么,那么,那么,那么,A A0 = 100 = 10,AmAm = 100 = 100, NmNm = FFH = 255 = FFH = 255,NxNx = 28H = 40 = 28H = 40,则:则:则:则:AxAx = ( = (AmAm - - A A0)0)NxNx / / NmNm + + A A0 0 = (100 - 10)(40 / 255) + 10 = (100 - 10)(40 / 255) +

123、 10 = 24.1 = 24.1程序(略)程序(略)程序(略)程序(略)4.3 汇编语言程序设计实例汇编语言程序设计实例-标度变换程序标度变换程序8/27/202470单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录习题与思考题习题与思考题4-1 4-1 常用的程序结构有哪几种?特点如何?常用的程序结构有哪几种?特点如何?常用的程序结构有哪几种?特点如何?常用的程序结构有哪几种?特点如何?4-2 4-2 子程序调用时,参数的传递方法有哪几种?子程序调用时,参数的传递方法有哪几种?子程序调用时,参数的传递方法有哪几种?子程序调用时,参数的传递方法有哪几种?4-3 4-3 编编编编

124、写写写写程程程程序序序序,将将将将片片片片内内内内30H30H39H39H单单单单元元元元中中中中的的的的内内内内容容容容送送送送到到到到以以以以2000H2000H为首的外部存储器。为首的外部存储器。为首的外部存储器。为首的外部存储器。4-4 4-4 MCS-51MCS-51系系系系列列列列单单单单片片片片机机机机汇汇汇汇编编编编语语语语言言言言进进进进行行行行程程程程序序序序设设设设计计计计的的的的步步步步骤如何?骤如何?骤如何?骤如何?4-5 4-5 编编编编写写写写程程程程序序序序,采采采采用用用用算算算算术术术术平平平平均均均均值值值值滤滤滤滤波波波波法法法法求求求求采采采采样样样样

125、平平平平均均均均值值值值,设设设设8 8次次次次采采采采样样样样值值值值依依依依次次次次放放放放在在在在20H20H27H27H的的的的连连连连续续续续单单单单元中,结果保留在元中,结果保留在元中,结果保留在元中,结果保留在A A中。中。中。中。 8/27/202471单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4-6 4-6 编编编编写写写写程程程程序序序序,将将将将存存存存放放放放在在在在内内内内部部部部RAMRAM起起起起始始始始地地地地址址址址为为为为20H20H和和和和30H30H的的的的两两两两个个个个3 3字字字字节节节节无无无无符符符符号号号号相相相相减减减减

126、,结结结结结结结结果果果果存存存存放放放放在在在在内内内内部部部部RAMRAM单单单单元元元元70H70H、71H71H、72H72H中(低位对应低字节)。中(低位对应低字节)。中(低位对应低字节)。中(低位对应低字节)。 4-7 4-7 编编编编写写写写程程程程序序序序,实实实实现现现现两两两两个个个个双双双双字字字字节节节节无无无无符符符符号号号号数数数数的的的的乘乘乘乘法法法法运运运运算算算算,乘乘乘乘数数数数存存存存放放放放在在在在R2R2和和和和R3R3中中中中(R2R2存存存存放放放放高高高高字字字字节节节节,R3R3存存存存放放放放低低低低字字字字节节节节,以以以以下下下下类类类

127、类同同同同),被被被被乘乘乘乘数数数数存存存存放放放放在在在在R6R6和和和和R7R7中中中中,积积积积存存存存放放放放在在在在R4R4、R5R5、R6R6和和和和R7R7中。中。中。中。4-8 4-8 假假假假设设设设在在在在R0R0指指指指向向向向的的的的片片片片内内内内RAMRAM区区区区,存存存存有有有有2020个个个个1616进进进进制制制制数数数数的的的的ASCIIASCII字字字字串串串串。将将将将ASCIIASCII码码码码转转转转换换换换为为为为1616进进进进制制制制数数数数,然然然然后后后后两两两两两两两两合合合合成一个字节,从低地址单元到高地址单元依次组合。成一个字节,从低地址单元到高地址单元依次组合。成一个字节,从低地址单元到高地址单元依次组合。成一个字节,从低地址单元到高地址单元依次组合。4-94-9 结合例结合例结合例结合例2525和图和图和图和图4-54-5编写线性标度变换程序。编写线性标度变换程序。编写线性标度变换程序。编写线性标度变换程序。习题与思考题习题与思考题8/27/202472

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号