第4章_MCS-51汇编语言程序设计.ppt

上传人:s****8 文档编号:66867075 上传时间:2022-12-21 格式:PPT 页数:77 大小:284.50KB
返回 下载 相关 举报
第4章_MCS-51汇编语言程序设计.ppt_第1页
第1页 / 共77页
第4章_MCS-51汇编语言程序设计.ppt_第2页
第2页 / 共77页
点击查看更多>>
资源描述

《第4章_MCS-51汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章_MCS-51汇编语言程序设计.ppt(77页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、返回目录单片机原理与应用单片机原理与应用第第4章章 MCS-51汇编语言汇编语言程序设计程序设计12/21/20221返回目录n n了解汇编语言编程的基础知识;了解汇编语言编程的基础知识;了解汇编语言编程的基础知识;了解汇编语言编程的基础知识;n n了解汇编语言程序设计的基本步骤和方法;了解汇编语言程序设计的基本步骤和方法;了解汇编语言程序设计的基本步骤和方法;了解汇编语言程序设计的基本步骤和方法;n n了了了了解解解解汇汇汇汇编编编编语语语语言言言言目目目目标标标标程程程程序序序序效效效效率率率率高高高高、占占占占存存存存储储储储空空空空间间间间少、运行速度快、实时性强等特点;少、运行速度快

2、、实时性强等特点;少、运行速度快、实时性强等特点;少、运行速度快、实时性强等特点;n n掌掌掌掌握握握握MCS-51MCS-51汇汇汇汇编编编编语语语语言言言言的的的的顺顺顺顺序序序序、分分分分支支支支、循循循循环环环环、查表及子程序的结构;查表及子程序的结构;查表及子程序的结构;查表及子程序的结构;本章教学要求本章教学要求 第第4章章 MCS-51汇编语言程序设计汇编语言程序设计 12/21/20222返回目录4.1 4.1 程序设计概述程序设计概述程序设计概述程序设计概述4.1.1 4.1.1 程序设计的步骤程序设计的步骤程序设计的步骤程序设计的步骤4.1.2 4.1.2 汇编语言的规范汇

3、编语言的规范汇编语言的规范汇编语言的规范4.1.3 4.1.3 汇编语言程序编辑和汇编语言程序编辑和汇编语言程序编辑和汇编语言程序编辑和汇编汇编汇编汇编4.2 4.2 结构化程序设计方法结构化程序设计方法结构化程序设计方法结构化程序设计方法本章目录本章目录4.2.1 顺序结构程序顺序结构程序4.2.2 分支结构程序分支结构程序4.2.3 循环结构程序循环结构程序4.2.4 查表程序查表程序4.2.5 子程序子程序4.3 汇编语言程序设计实例汇编语言程序设计实例习题与思考题习题与思考题第第4章章 MCS-51汇编语言程序设计汇编语言程序设计 12/21/20223返回目录4.1 程序设计概述程序

4、设计概述n n本本本本章章章章介介介介绍绍绍绍使使使使用用用用MCS-51MCS-51指指指指令令令令系系系系统统统统编编编编写写写写汇汇汇汇编编编编程程程程序序序序的的的的方方方方法法法法。与与与与高高高高级级级级语语语语言言言言相相相相比比比比,汇汇汇汇编编编编语语语语言言言言具具具具有有有有实实实实时时时时性性性性好好好好、代代代代码码码码效效效效率率率率高高高高、执执执执行行行行速速速速度度度度快快快快以以以以及及及及节节节节约约约约内内内内存存存存空空空空间间间间等等等等优优优优点点点点,同同同同时时时时还还还还可可可可以以以以充充充充分分分分利利利利用用用用机机机机器器器器的的的的

5、硬硬硬硬件件件件结结结结构构构构与与与与功功功功能能能能来操作硬件端口。来操作硬件端口。来操作硬件端口。来操作硬件端口。n n本本本本章章章章介介介介绍绍绍绍汇汇汇汇编编编编语语语语言言言言程程程程序序序序编编编编写写写写的的的的一一一一般般般般知知知知识识识识、程程程程序序序序设设设设计计计计的的的的基基基基本本本本步步步步骤骤骤骤和和和和格格格格式式式式,以以以以及及及及各各各各种种种种类类类类型型型型的的的的程程程程序序序序设设设设计计计计,包包包包括括括括顺顺顺顺序序序序程程程程序序序序、分分分分支支支支程程程程序序序序、循循循循环环环环程程程程序序序序、查查查查表表表表程程程程序序序

6、序和子程序和子程序和子程序和子程序等。等。等。等。12/21/20224返回目录4.1.1 程序设计的步骤程序设计的步骤n nMCS-51MCS-51单单单单片片片片机机机机提提提提供供供供111111条条条条指指指指令令令令,它它它它们们们们以以以以指指指指令令令令助助助助记记记记符符符符的的的的形形形形式式式式出出出出现现现现,指指指指令令令令助助助助记记记记符符符符的的的的集集集集合合合合称称称称为为为为汇编语言。汇编语言。汇编语言。汇编语言。n n由汇编语言编写的程序称为汇编语言源程序。由汇编语言编写的程序称为汇编语言源程序。由汇编语言编写的程序称为汇编语言源程序。由汇编语言编写的程序

7、称为汇编语言源程序。n n汇汇汇汇编编编编语语语语言言言言源源源源程程程程序序序序必必必必须须须须翻翻翻翻译译译译成成成成机机机机器器器器代代代代码码码码组组组组成成成成的的的的目目目目标标标标程程程程序序序序,机机机机器器器器才才才才能能能能执执执执行行行行。用用用用汇汇汇汇编编编编语语语语言言言言编编编编制制制制程序的过程,称为汇编语言程序设计。程序的过程,称为汇编语言程序设计。程序的过程,称为汇编语言程序设计。程序的过程,称为汇编语言程序设计。12/21/20225返回目录n n使使使使用用用用汇汇汇汇编编编编语语语语言言言言设设设设计计计计一一一一个个个个程程程程序序序序,大大大大致致

8、致致可可可可分分分分为为为为以以以以下下下下几几几几个步骤:个步骤:个步骤:个步骤:1)1)分析题意,明确要求。分析题意,明确要求。分析题意,明确要求。分析题意,明确要求。2)2)确定算法。确定算法。确定算法。确定算法。3)3)画程序流程图,用图解来描述和说明解题步骤。画程序流程图,用图解来描述和说明解题步骤。画程序流程图,用图解来描述和说明解题步骤。画程序流程图,用图解来描述和说明解题步骤。4)4)分配内存单元,确定程序与数据区的存放地址。分配内存单元,确定程序与数据区的存放地址。分配内存单元,确定程序与数据区的存放地址。分配内存单元,确定程序与数据区的存放地址。5)5)编写源程序。编写源程

9、序。编写源程序。编写源程序。6)6)程序优化。程序优化。程序优化。程序优化。7)7)上机调试、修改和最后确定源程序。上机调试、修改和最后确定源程序。上机调试、修改和最后确定源程序。上机调试、修改和最后确定源程序。4.1.1 程序设计的步骤程序设计的步骤12/21/20226返回目录4.1.2 汇编语言的规范汇编语言的规范n n汇汇汇汇编编编编语语语语言言言言源源源源程程程程序序序序由由由由汇汇汇汇编编编编指指指指令令令令和和和和伪伪伪伪指指指指令令令令两两两两者者者者构构构构成成成成。用用用用汇汇汇汇编编编编语语语语言言言言编编编编写写写写的的的的源源源源程程程程序序序序通通通通常常常常需需需

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

11、器的的的的操操操操作作作作也也也也不不不不能能能能被被被被汇汇汇汇编编编编成成成成机机机机器器器器代代代代码码码码,只只只只是是是是为为为为汇汇汇汇编编编编程程程程序序序序所所所所识识识识别别别别的的的的常常常常用用用用符符符符号号号号,并并并并指指指指导导导导汇汇汇汇编编编编如何进行,故称为伪指令。如何进行,故称为伪指令。如何进行,故称为伪指令。如何进行,故称为伪指令。12/21/20227返回目录 标标标标号号号号:助助助助记记记记符符符符 操操操操作作作作数数数数1 1,操操操操作作作作数数数数2 2,操操操操作作作作数数数数3 3;注注注注释释释释 n n标号标号标号标号:标号是指令地

12、址的标识符号。:标号是指令地址的标识符号。:标号是指令地址的标识符号。:标号是指令地址的标识符号。有有有有了了了了标标标标号号号号,程程程程序序序序中中中中的的的的其其其其它它它它语语语语句句句句才才才才能能能能访访访访问问问问该该该该语语语语句句句句。有有有有关关关关标号的规定如下。标号的规定如下。标号的规定如下。标号的规定如下。1)1)标号由标号由标号由标号由1818个个个个ASCIIASCII字符组成。第一个字符必须是字符组成。第一个字符必须是字符组成。第一个字符必须是字符组成。第一个字符必须是字母,其余字符可以是字母、数字或其它特定字符;字母,其余字符可以是字母、数字或其它特定字符;字

13、母,其余字符可以是字母、数字或其它特定字符;字母,其余字符可以是字母、数字或其它特定字符;2)2)标号不能使用该汇编语言已经定义了的符号。如标号不能使用该汇编语言已经定义了的符号。如标号不能使用该汇编语言已经定义了的符号。如标号不能使用该汇编语言已经定义了的符号。如指令助记符、伪指令以及寄存器符号名称等;指令助记符、伪指令以及寄存器符号名称等;指令助记符、伪指令以及寄存器符号名称等;指令助记符、伪指令以及寄存器符号名称等;3)3)标号后边必须跟以标号后边必须跟以标号后边必须跟以标号后边必须跟以冒号冒号冒号冒号。1 1汇编指令格式汇编指令格式汇编指令格式汇编指令格式4.1.2 汇编语言的规范汇编

14、语言的规范-标号标号标号标号12/21/20228返回目录n n操操操操作作作作数数数数:操操操操作作作作数数数数用用用用于于于于给给给给指指指指令令令令的的的的操操操操作作作作提提提提供供供供数数数数据据据据或或或或地地地地址址址址。在在在在一一一一条条条条汇汇汇汇编编编编语语语语句句句句中中中中操操操操作作作作数数数数可可可可能能能能是是是是空空空空白白白白的的的的,也也也也可可可可能能能能包包包包括括括括两两两两项项项项或或或或三三三三项项项项。各各各各操操操操作作作作数数数数间间间间用用用用逗逗逗逗号号号号分分分分隔隔隔隔。操操操操作作作作数数数数字字字字段段段段的的的的内内内内容容容

15、容可可可可能能能能包包包包括括括括工工工工作作作作寄寄寄寄存存存存器器器器、特特特特殊殊殊殊功功功功能能能能寄寄寄寄存存存存器器器器、标号、常数和表达式。标号、常数和表达式。标号、常数和表达式。标号、常数和表达式。n n注注注注释释释释:对对对对程程程程序序序序加加加加以以以以说说说说明明明明,是是是是不不不不可可可可执执执执行行行行部部部部分分分分。注注注注释释释释字字字字段段段段必必必必须须须须以以以以分分分分号号号号“;”开开开开头头头头,长长长长度度度度不不不不限限限限,当当当当一一一一行行行行书书书书写写写写不不不不下下下下时时时时,可可可可以以以以换换换换行行行行接接接接着着着着书

16、书书书写写写写,但但但但换换换换行行行行时时时时应应应应注注注注意意意意在在在在开开开开头使用分号头使用分号头使用分号头使用分号“;”。4.1.2 汇编语言的规范汇编语言的规范-操作数操作数12/21/20229返回目录MCS-51MCS-51系列单片机的常用伪指令有:系列单片机的常用伪指令有:系列单片机的常用伪指令有:系列单片机的常用伪指令有:ORGORG、ENDEND、EQUEQU、DATADATA、DBDB、DWDW、DSDS和和和和BITBIT等。等。等。等。2 2伪指令伪指令伪指令伪指令4.1.2 汇编语言的规范汇编语言的规范-伪指令伪指令ORGORG格式:格式:格式:格式:标号标号

17、标号标号:ORG 16:ORG 16位地址位地址位地址位地址功能:规定程序块或数据块存放的起始地址。功能:规定程序块或数据块存放的起始地址。功能:规定程序块或数据块存放的起始地址。功能:规定程序块或数据块存放的起始地址。如:如:如:如:ORGORG8000H8000H;规规规规定定定定下下下下面面面面的的的的第第第第一一一一条条条条指指指指令令令令从从从从地地地地址址址址8000H8000H单元开始存放,即标号单元开始存放,即标号单元开始存放,即标号单元开始存放,即标号STARTSTART的值为的值为的值为的值为8000H8000HSTART:START:MOVMOV A,#30HA,#30H

18、.(1 1)汇编起始伪指令汇编起始伪指令汇编起始伪指令汇编起始伪指令ORGORG12/21/202210返回目录格式:格式:格式:格式:标号标号标号标号:END END 表达式表达式表达式表达式 功能:结束汇编。汇编程序遇到功能:结束汇编。汇编程序遇到功能:结束汇编。汇编程序遇到功能:结束汇编。汇编程序遇到ENDEND伪指令后即结束汇伪指令后即结束汇伪指令后即结束汇伪指令后即结束汇编。处于编。处于编。处于编。处于ENDEND之后的程序,汇之后的程序,汇之后的程序,汇之后的程序,汇 编程序不予处理。编程序不予处理。编程序不予处理。编程序不予处理。(2 2)汇编结束伪指令)汇编结束伪指令)汇编结束

19、伪指令)汇编结束伪指令ENDEND4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令ENDEND如:如:如:如:ORG ORG2000H2000HSTART:MOVSTART:MOVA,#00HA,#00H END END;表示标号表示标号表示标号表示标号STARTSTART开始的开始的开始的开始的程序段结束。程序段结束。程序段结束。程序段结束。12/21/202211返回目录格式:格式:格式:格式:字符名称字符名称字符名称字符名称EQU EQU 操作数操作数操作数操作数功能:将操作数赋予规定的字符名称。功能:将操作数赋予规定的字符名称。功能:将操作数赋予规定的字符名称。功能:将操作数赋予

20、规定的字符名称。(3 3)等值伪指令)等值伪指令)等值伪指令)等值伪指令EQUEQU4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令EQUEQU如:如:如:如:ABABEQU 16HEQU 16HDELYDELYEQU 1234HEQU 1234HMOVMOV A,AB A,ABLCALL DELYLCALL DELY12/21/202212返回目录格式:字符名称格式:字符名称格式:字符名称格式:字符名称DATA DATA 操作数操作数操作数操作数 字符名称字符名称字符名称字符名称XDATA XDATA 操作数操作数操作数操作数功能:将操作数赋予规定的字符名称。功能:将操作数赋予规定的字

21、符名称。功能:将操作数赋予规定的字符名称。功能:将操作数赋予规定的字符名称。(4 4)数据地址伪指令)数据地址伪指令)数据地址伪指令)数据地址伪指令DATADATA(XDATAXDATA)4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令EQUEQU如:如:如:如:ABABDATA 16HDATA 16HDELYDELYXDATA 1234HXDATA 1234HMOVMOV A,AB A,ABLCALL DELYLCALL DELY12/21/202213返回目录格式:格式:格式:格式:标号标号标号标号:DB 8DB 8位二进制数表位二进制数表位二进制数表位二进制数表功功功功能能能能:D

22、BDB指指指指令令令令是是是是在在在在程程程程序序序序存存存存储储储储器器器器(ROMROM)中中中中,从从从从指指指指定定定定的的的的地地地地址址址址单单单单元元元元开开开开始始始始,定定定定义义义义若若若若干干干干个个个个8 8位位位位内内内内存存存存单单单单元元元元的的的的内内内内容容容容。用用用用来来来来在在在在程程程程序序序序存存存存储储储储器器器器的的的的某某某某一一一一部部部部分分分分存存存存入入入入一一一一组组组组8 8位位位位二二二二进进进进制制制制数数数数,或或或或者者者者是是是是将将将将一一一一个个个个数数数数据据据据表表表表格格格格存存存存入入入入程程程程序序序序存存存

23、存储储储储器器器器。这这这这个个个个伪伪伪伪指指指指令令令令在汇编以后,将影响程序存储器的内容。在汇编以后,将影响程序存储器的内容。在汇编以后,将影响程序存储器的内容。在汇编以后,将影响程序存储器的内容。(5 5)定义字节伪指令)定义字节伪指令)定义字节伪指令)定义字节伪指令DBDB4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令DBDB12/21/202214返回目录以上伪指令经汇编以后,将从以上伪指令经汇编以后,将从以上伪指令经汇编以后,将从以上伪指令经汇编以后,将从1010H1010H开始的若干内存单元赋值:开始的若干内存单元赋值:开始的若干内存单元赋值:开始的若干内存单元赋值:(

24、1010H)=20H(1010H)=20H(1011H)=43H(1011H)=43H(1012H)=25H(1012H)=25H(1013H)=FFH(1013H)=FFH其中其中其中其中43H43H是字符是字符是字符是字符C C的的的的ASCIIASCII码,码,码,码,FFHFFH是数值是数值是数值是数值-1-1的补码,的补码,的补码,的补码,十进制数十进制数十进制数十进制数3232也换算为也换算为也换算为也换算为1616进制数进制数进制数进制数20H20H。4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令DBDB应用应用如:如:如:如:ORGORG1010H1010H TAB:T

25、AB:DBDB32,C,25H,-132,C,25H,-112/21/202215返回目录 标号标号标号标号:DW 16DW 16位二进制数表位二进制数表位二进制数表位二进制数表功功功功能能能能:DWDW指指指指令令令令是是是是在在在在程程程程序序序序存存存存储储储储器器器器(ROMROM)中中中中,从从从从指指指指定定定定的的的的地地地地址址址址单单单单元元元元开开开开始始始始,定定定定义义义义若若若若干干干干个个个个1616位位位位数数数数据据据据。一一一一个个个个1616位位位位数数数数要要要要占占占占两两两两个个个个存存存存储储储储单单单单元元元元,其其其其中中中中高高高高8 8位位位

26、位存存存存入入入入低低低低地地地地址址址址单单单单元元元元,低低低低8 8位存入高地址单元。位存入高地址单元。位存入高地址单元。位存入高地址单元。例如例如例如例如:ORGORG 1100H 1100HTABTAB:DWDW1234H,0ABH 101234H,0ABH 10以以以以上上上上伪伪伪伪指指指指令令令令经经经经汇汇汇汇编编编编以以以以后后后后,将将将将对对对对从从从从1100H1100H开开开开始始始始的的的的若若若若干内存单元赋值。干内存单元赋值。干内存单元赋值。干内存单元赋值。(6)定义字伪指令)定义字伪指令DW4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令DWDW12/

27、21/202216返回目录(1100H)=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)起作用)起作用)起作用)起作用,不,不,不,不能对数据存储器(能对数据存储器(

28、能对数据存储器(能对数据存储器(RAMRAM)的内容进行赋值或进行初始化)的内容进行赋值或进行初始化)的内容进行赋值或进行初始化)的内容进行赋值或进行初始化工作。工作。工作。工作。例如:例如:例如:例如:ORGORG 1100H1100HTABTAB:DW:DW 1234H,0ABH 101234H,0ABH 104.1.3 汇编语言的规范汇编语言的规范-伪指令应用伪指令应用12/21/202217返回目录 标号标号标号标号:DS DS 表达式表达式表达式表达式功能:从指定(标号)地址开始(无标号时从顺序地址功能:从指定(标号)地址开始(无标号时从顺序地址功能:从指定(标号)地址开始(无标号时

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

30、DS 05H 05H经汇编后,从地址经汇编后,从地址经汇编后,从地址经汇编后,从地址2000H2000H开始预留开始预留开始预留开始预留5 5个存储单元。个存储单元。个存储单元。个存储单元。(7 7)定义存储区伪指令)定义存储区伪指令)定义存储区伪指令)定义存储区伪指令DSDS4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令DSDS12/21/202218返回目录字符名称字符名称字符名称字符名称 BIT BIT 位地址位地址位地址位地址功能:将位地址赋给字符名称。功能:将位地址赋给字符名称。功能:将位地址赋给字符名称。功能:将位地址赋给字符名称。例如:例如:例如:例如:S SBITBIT

31、P1.0P1.0经汇编后,经汇编后,经汇编后,经汇编后,S S符号的值是符号的值是符号的值是符号的值是P1.0P1.0的地址的地址的地址的地址90H90H。(8 8)位定义伪指令)位定义伪指令)位定义伪指令)位定义伪指令BITBIT4.1.3 汇编语言的规范汇编语言的规范-伪指令伪指令BITBIT12/21/202219返回目录4.1.4 汇编语言程序编辑和汇编汇编语言程序编辑和汇编1 1汇编语言源程序编辑汇编语言源程序编辑汇编语言源程序编辑汇编语言源程序编辑-编写规范编写规范 DATA0 DATA0 EQU 30H EQU 30H;将将将将30H30H赋予字符名称赋予字符名称赋予字符名称赋予

32、字符名称DATA0DATA0ORGORG4000H4000H ;规定下面程序从规定下面程序从规定下面程序从规定下面程序从4000H4000H单元开始存放单元开始存放单元开始存放单元开始存放MOVMOVR0,#DATA0 R0,#DATA0;30HR0;30HR0MOVMOVR1,DATA0 R1,DATA0 ;(30H)R1;(30H)R1CJNECJNER1,#00H,NEXTR1,#00H,NEXT;R100H,;R100H,则转则转则转则转NEXTNEXTHERE:HERE:SJMPSJMPHEREHERENEXT:NEXT:CLRCLRA A;0A;0ALOOP:LOOP:INCINC

33、R0R0;(R0)+1R0;(R0)+1R0ADDADDA,R0A,R0;(A)+(R0)A;(A)+(R0)ADJNZDJNZR1,LOOPR1,LOOP;(R1)-1R1,R1;(R1)-1R1,R1 0,0,则转则转则转则转LOOPLOOPSJMPSJMPHEREHEREENDEND;汇编到此结束汇编到此结束汇编到此结束汇编到此结束12/21/202220返回目录源程序源程序源程序源程序 地址地址地址地址 目标码目标码目标码目标码DATA0DATA0 EQUEQU30H30HORGORG4000H4000HMOVMOVR0,#DATA0R0,#DATA0 ;4000;4000783078

34、30MOVMOVR1,DATA0 R1,DATA0 ;4002;4002A930A930CJNECJNER1,#00H,NEXTR1,#00H,NEXT;4004;4004B90002B90002HERE:HERE:SJMPSJMPHEREHERE ;4007;400780FE80FENEXT:NEXT:CLRCLRA A ;4009;4009E4E4LOOP:LOOP:INCINCR0R0 ;400A;400A0808ADDADDA,R0A,R0 ;400B;400B 26 26DJNZDJNZR1,LOOPR1,LOOP ;400C;400CD9FCD9FCSJMPSJMPHEREHERE

35、 ;400E;400E80F780F7ENDEND2 2汇编语言源程序的汇编汇编语言源程序的汇编汇编语言源程序的汇编汇编语言源程序的汇编4.1.4 汇编语言程序编辑和汇编汇编语言程序编辑和汇编-源程序汇编源程序汇编12/21/202221返回目录4.2 结构化程序设计方法结构化程序设计方法n n在汇编语言程序设计中,普遍采用在汇编语言程序设计中,普遍采用在汇编语言程序设计中,普遍采用在汇编语言程序设计中,普遍采用结构化程序结构化程序结构化程序结构化程序设计方法。采用这种设计方法的主要依据是任设计方法。采用这种设计方法的主要依据是任设计方法。采用这种设计方法的主要依据是任设计方法。采用这种设计方

36、法的主要依据是任何复杂的程序都可由顺序结构、分支结构及循何复杂的程序都可由顺序结构、分支结构及循何复杂的程序都可由顺序结构、分支结构及循何复杂的程序都可由顺序结构、分支结构及循环结构程序等构成。环结构程序等构成。环结构程序等构成。环结构程序等构成。n n每种结构只有每种结构只有每种结构只有每种结构只有一个入口和出口一个入口和出口一个入口和出口一个入口和出口,整个程序也只,整个程序也只,整个程序也只,整个程序也只有一个入口和出口。有一个入口和出口。有一个入口和出口。有一个入口和出口。n n结构程序设计的特点是结构程序设计的特点是结构程序设计的特点是结构程序设计的特点是程序的结构清晰、易于程序的结

37、构清晰、易于程序的结构清晰、易于程序的结构清晰、易于读写和验证、可靠性高读写和验证、可靠性高读写和验证、可靠性高读写和验证、可靠性高。下面主要介绍结构化。下面主要介绍结构化。下面主要介绍结构化。下面主要介绍结构化程序设计的基本程序设计方法。程序设计的基本程序设计方法。程序设计的基本程序设计方法。程序设计的基本程序设计方法。-程序结构程序结构12/21/202222返回目录4.2.1 顺序结构程序顺序结构程序例例例例4-14-1 将片内将片内将片内将片内RAMRAM的的的的20H20H单元中的压缩单元中的压缩单元中的压缩单元中的压缩BCDBCD码拆成两个码拆成两个码拆成两个码拆成两个ACSIIA

38、CSII码存入码存入码存入码存入21H21H、22H22H单元。高单元。高单元。高单元。高4 4位存在位存在位存在位存在21H21H单元,低单元,低单元,低单元,低4 4位存在位存在位存在位存在22H22H单元。单元。单元。单元。(4.2)(4.2)-顺序结构实例顺序结构实例ORGORG0500H0500HMOVMOVA,20HA,20HMOVMOVB,#10HB,#10H ;除以除以除以除以10H10HDIVDIVABABORLORLB,#30HB,#30H ;低低低低4 4位位位位BCDBCD码转换为码转换为码转换为码转换为ASCIIASCII码码码码MOVMOV22H,B22H,BORL

39、ORLA,#30HA,#30H ;高高高高4 4位位位位BCDBCD码转换为码转换为码转换为码转换为ASCIIASCII码码码码MOVMOV21H,A21H,ASJMP$SJMP$ENDEND12/21/202223返回目录例例例例4-24-2 设有设有设有设有1616位二进制数存放在内部位二进制数存放在内部位二进制数存放在内部位二进制数存放在内部RAMRAM的的的的50H50H及及及及51H51H单元中,要求将其算术左移一位(即原数各位均单元中,要求将其算术左移一位(即原数各位均单元中,要求将其算术左移一位(即原数各位均单元中,要求将其算术左移一位(即原数各位均向左移向左移向左移向左移1 1

40、位,最低位移入位,最低位移入位,最低位移入位,最低位移入0 0)后仍存放在原单元。)后仍存放在原单元。)后仍存放在原单元。)后仍存放在原单元。试编制相应的程序。试编制相应的程序。试编制相应的程序。试编制相应的程序。(4.5)(4.5)4.2.1 顺序结构程序顺序结构程序-顺序结构实例顺序结构实例 ORG 0100H ORG 0100HBIHROL:CLR CBIHROL:CLR C ;Cy;Cy清零清零清零清零 MOV A,51H MOV A,51H ;低低低低8 8位向左环移位向左环移位向左环移位向左环移1 1位位位位 RLC A RLC A MOV 51H,A MOV 51H,A MOV

41、A,50H MOV A,50H ;高高高高8 8位向左环移位向左环移位向左环移位向左环移1 1位位位位 RLC A RLC A MOV 50H,A MOV 50H,A END END12/21/202224返回目录4.2.2 分支程序分支程序分分分分支支支支程程程程序序序序可可可可根根根根据据据据要要要要求求求求无无无无条条条条件件件件或或或或有有有有条条条条件件件件地地地地改改改改变变变变程程程程序序序序执执执执行行行行流流流流向向向向。编编编编写写写写分分分分支支支支程程程程序序序序主主主主要要要要在在在在于于于于正正正正确确确确使使使使用用用用转转转转移移移移指指指指令令令令。分分分分支

42、支支支程程程程序序序序有有有有:单分支结构、双分支结构、多分支结构(散转)。单分支结构、双分支结构、多分支结构(散转)。单分支结构、双分支结构、多分支结构(散转)。单分支结构、双分支结构、多分支结构(散转)。编写程序,根据编写程序,根据编写程序,根据编写程序,根据x x的值求的值求的值求的值求y y的值,并放回原单元中。的值,并放回原单元中。的值,并放回原单元中。的值,并放回原单元中。(4.5.3)(4.5.3)-分支结构分支结构例例例例4-34-3 设变量设变量设变量设变量x x以补码形式存放在片内以补码形式存放在片内以补码形式存放在片内以补码形式存放在片内RAMRAM的的的的30H30H单

43、元中,单元中,单元中,单元中,变量变量变量变量y y与与与与x x的关系是:的关系是:的关系是:的关系是:12/21/202225返回目录4.2.2 分支程序分支程序-分支结构实例分支结构实例 ORG ORG1000H1000HSTART: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,那那那那么么么么将将

44、将将x x送送送送A A;如如如如果果果果AxAx,那那那那么么么么A A值值值值不不不不变变变变,直直直直到到到到最最最最后后后后一一一一个个个个单单单单元元元元内内内内容容容容与与与与A A比比比比较较较较、操操操操作作作作完完完完毕毕毕毕,则则则则A A中中中中就就就就是是是是该该该该数数数数组组组组中中中中的的的的最最最最大大大大数数数数,这这这这里里里里需需需需要要要要解解解解决决决决如如如如何何何何判判判判别别别别两两两两个个个个带带带带符符符符号号号号数数数数A A和和和和x x的的的的大大大大小小小小。通通通通常常常常可可可可以以以以采采采采用用用用如如如如下下下下的的的的方方

45、方方法法法法:首首首首先先先先判判判判断断断断A A和和和和x x是是是是否否否否同同同同号号号号,若若若若是是是是同同同同号号号号则则则则进进进进行行行行A-XA-X操操操操作作作作,如如如如差差差差00,那那那那么么么么AXAX;如如如如果果果果差差差差00,那那那那么么么么AxAXX(或或或或A A);如为负,则如为负,则如为负,则如为负,则A A(或(或(或(或x x)xx(或(或(或(或A A)。程序如下:)。程序如下:)。程序如下:)。程序如下:-循环结构实例循环结构实例4.2.3 循环程序循环程序12/21/202231返回目录-循环结构实例循环结构实例4.2.3 循环程序循环程

46、序 ORGORG 1000H1000HSCMPPMA:SCMPPMA: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;两数符号相同?两数符号相同?两数符号相同?两数符号相同?JBJB

47、ACC.7,RESLATACC.7,RESLAT;若相异若相异若相异若相异,则转则转则转则转 MOVMOV A,R1A,R1;若相同若相同若相同若相同,则恢复则恢复则恢复则恢复A A中原来值中原来值中原来值中原来值 CLRCLR C C;C;C清零清零清零清零 SUBBSUBBA,R0 ;A,R0 ;两数相减两数相减两数相减两数相减,以判断两者的大小以判断两者的大小以判断两者的大小以判断两者的大小12/21/202232返回目录-循环结构实例循环结构实例4.2.3 循环程序循环程序 JNB ACC.7,SMEXT1 JNB ACC.7,SMEXT1;若若若若A A中值为大中值为大中值为大中值为

48、大,则转则转则转则转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中值为正中值为正中值为正中值为正,侧转侧转侧转侧转SMEXT2SMEXT2 SJMP CXAHER SJMP CXAHER ;若若若若A A中值

49、为负中值为负中值为负中值为负,则转则转则转则转CXAHERCXAHERSMEXT1:MOV R1,ASMEXT1:MOV R1,A ;恢复恢复恢复恢复A A中原值中原值中原值中原值SMEXT2:DJNZ B,SCLOOPSMEXT2:DJNZ B,SCLOOP MOV 1FH,A MOV 1FH,A ;最大者送最大者送最大者送最大者送1FH1FH单元单元单元单元 END END12/21/202233返回目录例例例例4-64-6 将内部将内部将内部将内部RAMRAM中起始地址为中起始地址为中起始地址为中起始地址为datadata的数据串传的数据串传的数据串传的数据串传送到外部送到外部送到外部送

50、到外部RAMRAM中起始地址为中起始地址为中起始地址为中起始地址为bufbuf的存储区域的存储区域的存储区域的存储区域内,直到发现内,直到发现内,直到发现内,直到发现“$”“$”字符停止传送。字符停止传送。字符停止传送。字符停止传送。本例结束条件为找到本例结束条件为找到本例结束条件为找到本例结束条件为找到“$”“$”停止传送。停止传送。停止传送。停止传送。程序如下:程序如下:程序如下:程序如下:4.2.3 循环程序循环程序-循环结构实例循环结构实例12/21/202234返回目录4.2.3 循环程序循环程序 ORGORG 8000H8000HMOVMOV R0,#DATAR0,#DATA ;置

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com