【大学课件】单片机原理与接口技术课件-MCS-51汇编语言程序设计

PPT
  • 阅读 49 次
  • 下载 0 次
  • 页数 72 页
  • 大小 909.512 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
【大学课件】单片机原理与接口技术课件-MCS-51汇编语言程序设计
可在后台配置第一页与第二页中间广告代码
【大学课件】单片机原理与接口技术课件-MCS-51汇编语言程序设计
可在后台配置第二页与第三页中间广告代码
【大学课件】单片机原理与接口技术课件-MCS-51汇编语言程序设计
可在后台配置第三页与第四页中间广告代码
【大学课件】单片机原理与接口技术课件-MCS-51汇编语言程序设计
【大学课件】单片机原理与接口技术课件-MCS-51汇编语言程序设计
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 72
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】【大学课件】单片机原理与接口技术课件-MCS-51汇编语言程序设计.ppt,共(72)页,909.512 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44734.html

以下为本文档部分文字说明:

单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录110:55单片机原理与接口技术第4章MCS-51汇编语言程序设计http://www.docin.com/sundae_meng单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录210:55(1)了解汇

编语言编程的基础知识。(2)了解汇编语言程序设计的基本步骤和方法。(3)了解汇编语言目标程序效率高、占存储空间少、运行速度快、实时性强等特点。(4)掌握MCS-51汇编语言的顺序、分支、循环、查表及子程序的结构。(5)掌

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

4汇编语言程序编辑和汇编4.2结构化程序设计方法本章目录4.2.1顺序结构程序4.2.2分支结构程序4.2.3循环结构程序4.2.4查表程序4.2.5子程序4.3汇编语言程序设计实例习题与思考题单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录410:554.1

程序设计概述本章介绍使用MCS-51指令系统编写汇编程序的方法。与高级语言相比,汇编语言具有实时性好、代码效率高、执行速度快以及节约内存空间等优点,同时还可以充分利用机器的硬件结构与功能来操作硬件端口。本章介绍汇编语言程序编写的一般知识、程序设计的基本步骤和格式,以及各种类型的程序设计,包括

顺序程序、分支程序、循环程序、查表程序和子程序等。单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录510:554.1.1程序设计的步骤MCS-51单片机提供111条指令,它们以指令助记符的形式出现,指令助记符的集合

称为汇编语言。由汇编语言编写的程序称为汇编语言源程序。汇编语言源程序必须翻译成机器代码组成的目标程序,机器才能执行。用汇编语言编制程序的过程,称为汇编语言程序设计。单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录610:55使用汇编语言设计一个程序,大致可分为以下几个

步骤:1)分析题意,明确要求。2)确定算法。3)画程序流程图,用图解来描述和说明解题步骤。4)分配内存单元,确定程序与数据区的存放地址。5)编写源程序。6)程序优化。7)上机调试、修改和最后确定源程序。4.1.1程序设计的步骤单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录71

0:554.1.2程序设计的方法1.模块化程序设计2.尽量采用循环及子程序结构3.自上而下的程序设计单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录810:554.1.3汇编语言的规范汇编语言源程序由汇编指令

和伪指令两者构成。用汇编语言编写的源程序通常需经过微机汇编程序编译(汇编)成机器码后才能被单片机执行。为了对源程序汇编,在源程序中必须使用一些“伪指令”。伪指令是便于程序阅读和编写的指令,它即不控制机器的操作也不能被汇编成机器代码,只是为汇编程序

所识别的常用符号,并指导汇编如何进行,故称为伪指令。单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录910:55[标号:]助记符[操作数1[,操作数2][,操作数3]][;注释]标号:标号是指令地址的标识符号。有了标号,

程序中的其它语句才能访问该语句。有关标号的规定如下。1)标号由1~8个ASCII字符组成。第一个字符必须是字母,其余字符可以是字母、数字或其它特定字符;2)标号不能使用该汇编语言已经定义了的符号。如指令助记符、伪指令以及寄存器符号名称等;3)标号后边必须跟以冒

号。1.汇编指令格式4.1.3汇编语言的规范----标号单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录1010:55操作数:操作数用于给指令的操作提供数据或地址。在一条汇编语句中操作数可能是空白的,也可能包括两项或三项。各操作数间用逗号分

隔。操作数字段的内容可能包括工作寄存器、特殊功能寄存器、标号、常数和表达式。注释:对程序加以说明,是不可执行部分。注释字段必须以分号“;”开头,长度不限,当一行书写不下时,可以换行接着书写,但换行时应注意在开头使用分号“;”。4.1.3汇编语言的规范----操作数单片机原理与接口技术(第2版).

李晓林.电子工业出版社返回目录1110:55MCS-51系列单片机的常用伪指令有:ORG、END、EQU、DB、DW、DS和BIT等。2.伪指令4.1.3汇编语言的规范---伪指令ORG格式:[标号:]ORG16位地址功能:规定程序

块或数据块存放的起始地址。如:ORG8000H;规定下面的第一条指令从地址8000H单元开始存放,即标号START的值为8000HSTART:MOVA,#30H…..(1)汇编起始伪指令ORG单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录1210:55格式:[标

号:]END[表达式]功能:结束汇编。汇编程序遇到END伪指令后即结束汇编。处于END之后的程序,汇编程序不予处理。(2)汇编结束伪指令END4.1.3汇编语言的规范---伪指令END如:ORG2000HSTART:MOVA,#0

0H…ENDSTART;表示标号START开始的程序段结束。单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录1310:55格式:字符名称EQU操作数功能:将操作数赋予规定的字符名称。(3)等值伪指令EQU4.1.3汇编语言的规范---伪指令EQU

如:ABEQU16HDELYEQU1234HMOVA,ABLCALLDELY单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录1410:55格式:[标号:]DB8位二进制数表功能:DB指令是在

程序存储器(ROM)中,从指定的地址单元开始,定义若干个8位内存单元的内容。用来在程序存储器的某一部分存入一组8位二进制数,或者是将一个数据表格存入程序存储器。这个伪指令在汇编以后,将影响程序存储器的内容。(4)定义字节伪指令DB4.1.3汇编语言的规范---伪指令DB单片机

原理与接口技术(第2版).李晓林.电子工业出版社返回目录1510:55以上伪指令经汇编以后,将从1010H开始的若干内存单元赋值:(1010H)=20H(1011H)=43H(1012H)=25H(1013H)=FFH其中4

3H是字符C的ASCII码,FFH是数值-1的补码,十进制数32也换算为16进制数20H。4.1.3汇编语言的规范----伪指令DB的应用如:ORG1010HTAB:DB32,‘C’,25H,-1单片机原理与接口技术(第

2版).李晓林.电子工业出版社返回目录1610:55[标号:]DW16位二进制数表功能:DW指令是在程序存储器(ROM)中,从指定的地址单元开始,定义若干个16位数据。一个16位数要占两个存储单元,其中高8位存入低地址单元,低8位存入高地址单元。例如:ORG1100HTAB:DW123

4H,0ABH10以上伪指令经汇编以后,将对从1100H开始的若干内存单元赋值。(5)定义字伪指令DW4.1.3汇编语言的规范---伪指令DW单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录1710:55(1100H)=12H(1101H)=34H(1102H

)=00H(1103H)=ABH(1104H)=00H(1105H)=0AH其数据存储格式如右表所示。DB、DW伪指令都只对程序存储器(ROM)起作用,不能对数据存储器(RAM)的内容进行赋值或进行初始化工作。例如:ORG1100HTAB:DW1234H,0ABH104.1.3汇编

语言的规范----伪指令DW的应用单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录1810:55[标号:]DS表达式功能:从指定(标号)地址开始(无标号时从顺序地址开始),保留指定数目(表达式的值)的字节单元作为备用存储区,供程序运行使用(用于程序存储器)。这些

单元的初值均为0。例如:ORG2000HTAB:DS05H经汇编后,从地址2000H开始预留5个存储单元。(6)定义存储区伪指令DS4.1.3汇编语言的规范----伪指令DS单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录1910:55字符名称BIT位地址功

能:将位地址赋给字符名称。例如:SBITP1.0经汇编后,S符号的值是P1.0的地址90H。(7)位定义伪指令BIT4.1.3汇编语言的规范----伪指令BIT单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录2010:554.

1.4汇编语言程序编辑和汇编1.汇编语言源程序编辑----编写规范DATA0EQU30H;将30H赋予字符名称DATA0ORG4000H;规定下面程序从4000H单元开始存放MOVR0,#DATA0;30H→R0MOVR1

,DATA0;(30H)→R1CJNER1,#00H,NEXT;R10≠00H,则转NEXTHERE:SJMPHERENEXT:CLRA;0→ALOOP:INCR0;(R0)+1→R0ADDA,@R0

;(A)+((R0))→ADJNZR1,LOOP;(R1)-1→R1,R10,则转LOOPSJMPHEREEND;汇编到此结束单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录2110:55源程序地址目标码DATA0EQU30HORG40

00HMOVR0,#DATA0;40007830MOVR1,DATA0;4002A930CJNER1,#00H,NEXT;4004B90002HERE:SJMPHERE;400780FENEXT:CLRA;4009E4LOOP:INCR0;400A08ADDA,@R0;400B

26DJNZR1,LOOP;400CD9FCSJMPHERE;400E80F7END2.汇编语言源程序的汇编4.1.4汇编语言程序编辑和汇编----源程序汇编单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录2210:554.2结构化程序设计方法在汇编语

言程序设计中,普遍采用结构化程序设计方法。采用这种设计方法的主要依据是任何复杂的程序都可由顺序结构、分支结构及循环结构程序等构成。每种结构只有一个入口和出口,整个程序也只有一个入口和出口。结构程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。下面

主要介绍结构化程序设计的基本程序设计方法。----程序结构单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录2310:554.2.1顺序结构程序例4-1将片内RAM的20H单元中的压缩BCD码拆成

两个ACSII码存入21H、22H单元。低4位存在21H单元,高4位存在22H单元。----顺序结构实例ORG2000HMOVA,20HMOVB,#10H;除以10HDIVABORLB,#30H;低4位BCD码转换

为ASCII码MOV21H,BORLA,#30H;高4位BCD码转换为ASCII码MOV22H,AEND单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录2410:55例4-2设有16位二进制数存放在内

部RAM的50H及51H单元中,要求将其算术左移一位(即原数各位均向左移1位,最低位移入0)后仍存放在原单元。试编制相应的程序。4.2.1顺序结构程序----顺序结构实例ORG4000HBIHROL:CLRC;C

y清零MOVA,51H;低8位向左环移1位RLCAMOV51H,AMOVA,50H;高8位向左环移1位RLCAMOV50H,AEND单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录2510:554.2.2分支

程序分支程序可根据要求无条件或有条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。分支程序有:单分支结构、双分支结构、多分支结构(散转)。编写程序,根据x的值求y的值,并放回原单元中。----分支结构例4-3设变量x以补码形式存放在片内RAM的30H单元中,变量

y与x的关系是:单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录2610:554.2.2分支程序----分支结构实例ORG1000HSTART:MOVA,30HJZNEXT;x=0,转移A

NLA,#80H;保留符号位JZED;x>0,转移MOVA,#05H;x<0,不转移ADDA,30HMOV30H,ASJMPEDNEXT:MOV30H,#20HED:SJMP$程序如下:单片机原理与接口技术(第2版).李晓林.电子工业出版社返

回目录2710:55例4-4128种分支转移程序。根据入口条件转移到128个目的地址。入口:(R3)=转移目的地址的序号00H→7FH。出口:转移到相应于程序入口。4.2.2分支程序----分支结构实例JMP-128

:MOVA,R3RLAMOVDPTR,#JMPTABJMP@A+DPTRJMPTAB:AJMPROUT00;128个子程序首址AJMPROUT01…AJMPROUT7F单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录2810:554.2.3循环程序典型

循环程序包含四部分:初始化部分、循环处理部分、循环控制部分和循环修改部分。下面分别介绍这四个组成部分。1)初始化部分:设置循环开始的初始值,为循环做准备。2)循环处理部分:循环程序中重复执行的内容。3)循环控制部分:判断是否结束循环。4)循环修改部分:修改循环参数,为执行下一次

循环做准备。----循环结构单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录2910:55----循环结构4.2.3循环程序先执行后判断先判断后执行单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录3010

:55例4-5设有一带符号的数组存放在内部RAM以20H为首址的连续单元中,其长度为90,要求找出其中的最大值,并将其存放到内部RAM的1FH单元中,试编写相应的程序。----循环结构实例4.2.3循环程序单片机原理与接口技术(第2版).李晓林.电子

工业出版社返回目录3110:55分析:开始时将第一单元内容送A,接着从第二位起依次将其内容x与A比较,如x>A,那么将x送A;如果A≥x,那么A值不变,直到最后一个单元内容与A比较、操作完毕,则A中就是该数组中的最大数,这里需要解决如何判别两个带符号数A和x的大小。通常可以采用如下的方法:首先判

断A和x是否同号,若是同号则进行A-X操作,如差>0,那么A>X;如果差<0,那么A<x;若为异号,则可判A(或x)是否为正。如为正,则A(或x)>X(或A);如为负,则A(或x)<x(或A)。程序如下:----循环结构实例4.2.3循环程序单片机原理与接口技术(第2版).李晓

林.电子工业出版社返回目录3210:55----循环结构实例4.2.3循环程序ORG1000HSCMPPMA:MOVR0,#20H;置取数指针R0初值MOVB,#59H;置循环计数器B初值MOVA,@R0;第一个数送ASCLOOP:INCR0;修改

指针MOVR1,A;暂存XRLA,@R0;两数符号相同?JBACC.7,RESLAT;若相异,则转RESLAT:MOVA,R1;若相同,则恢复A中原来值CLRC;C清零SUBBA,@R0;两数相减,以判断两者的大小单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录331

0:55----循环结构实例4.2.3循环程序JNBACC.7,SMEXT1;若A中值为大,则转SMEXT1CXAHER:MOVA,@R0;若A中值为小,则将大数送入ASJMPSMEXT2RESLAT:XRLA,@R0;恢复A中原值JNBACC.7,SMEXT2;若A中值为正,侧转SMEXT

2SJMPCXAHER;若A中值为负,则转CXAHERSMEXT1:MOVR1,A;恢复A中原值SMEXT2:DJNZB,SCLOOPMOV1FH,A;最大者送1FH单元END单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录

3410:55例4-6将内部RAM中起始地址为data的数据串传送到外部RAM中起始地址为buf的存储区域内,直到发现“$”字符停止传送。本例结束条件为找到“$”停止传送。程序如下:4.2.3循环程序----循环结构实例单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录351

0:554.2.3循环程序ORG8000HMOVR0,#DATA;置源数据区首地址MOVDPTR,#BUF;置目的数据区首地址LOOP0:MOVA,@R0;取数据CJNEA,#24H,LOOP1;判断是否为

$字符SJMPLOOP2;是$,转结束LOOP1:MOVX@DPTR,A;不是$,执行传送INCR0;修改源地址INCDPTR;修改目的地址SJMPLOOP0;传送下一个数据LOOP2:END----循环结构实例单片机原理与接口技术(第2版

).李晓林.电子工业出版社返回目录3610:55例4-7设8031单片机使用12MHz晶振(机器周期T为lµs),试设计延迟100ms的延时程序。4.2.3循环程序ORG4000HDEYPRG:MOVR5,#100;置外循环计数器R5初值为100LOO

P1:MOVR6,#200;置2层循环计数器R6初值为200LOOP2:MOVR7,#248;置3层循环计数器R7初值为248LOOP3:DJNZR7,LOOP3;3层循环计数结束否?DJNZR6,LOOP2;2层循环计数结束否?DJNZR

5,LOOP1;外循环计数结束否?RET单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录3710:55在上例程序中采用了多重循环程序,即在一个循环体中又包含了其他的循环程序,这种方法是实现延时程序的常用方法。使用多重循环时,必须注意以下几点。(1)循环嵌套,必须层次分明,不允许产

生内外层循环交叉;(2)外循环可以一层层向内循环进入,结束时由里往外一层层退出;(3)内循环可以直接转入外循环,实现一个循环由多个条件控制的循环结构方式。4.2.3循环程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录3810:554.2.4查表程序查

表程序是一种常用的程序,它广泛使用于LED显示器控制、打印以及数据补偿、计算、转换等功能程序中,具有程序简单、执行速度快等优点。查表,就是根据变量x在表格中查找y,使y=f(x)。例4-8试编写程序,将16进

制数转换成ASCII码。分析:16进制0~9的ASCII码为30~39H,A~F的ASCII码为41H~46H,ASCII码表的首地址为ASCTAB。入口:HEX单元的低四位存放16进制数。出口:转换后的ASCII码送回

HEX单元。----查表程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录3910:55----查表程序4.2.4查表程序ORG0200HHEXEQU33HHEXASC:MOVA,HEXANLA,#0FHMOV

DPTR,#ASCTABMOVCA,@A+DPTRMOVHEX,ARETASCTAB:DB30H,31H,32H,33HDB34H,35H,36H,37HDB38H,39H,41H,42HDB43H,44H,45H,46HEND单片机原理与接口技术(第2版).李晓林.电子工业

出版社返回目录4010:55例4-9设有一个巡回检测报警装置,需对16路输入进行检测,每路有一个最大允许值,它为双字节。检测时需根据测量的路数,找出该路的最大允许值。再判断输入值是否大于最大允许值,如大于则报警。这里只考虑查找最大值。分析:设x为路数,放在R2中。y为最大允许值,放在表格中。查表后

,最大值放在R3、R4中。4.2.4查表程序----查表程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4110:55ORG4000HPM1:MOVA,R2;其值范围为00H~0FH(如04)

ADDA,R2;A←(R2)×2,因最大允许值占两个字节(如08)MOVR3,A;R3←(R2)×2(如08)ADDA,#06H;加偏移量,(如400CH-4006H=#06H)MOVCA,@A+PC;查第1字节(如地址=400CH+8=4015H)XCHA,R3;存第1字节(如33)

,准备取第2字节ADDA,#03H;加偏移量(如400CH-400AH+01H=#03H)MOVCA,@A+PC;查第2字节(如400AH+0BH=4016H)MOVR4,A;存第2字节(如88)RETT

ABI:DW2520,3721,4264,7560,3388,3265,7883,9943;最大值表DW1050,4051,6785,8931,5468,5871,3284,66884.2.4查表程序----查表程序单片机原理与接口技术(第2版).李晓林.电子工业出版社

返回目录4210:554.2.5子程序同一个程序中,往往有许多地方都需要执行同样的一项任务,这时可以对这项任务进行独立的编写,形成一个子程序。在原来的主程序中需要执行该任务时,调用该子程序,执行完后又返回主程序,继续以后的操作,这就是所谓的子程序结构。在程序设计过程中,适当地使用子程序具

有以下优点:1)不必重复编写同样的程序,提高了编码的效率。2)缩短了源程序和目标程序的长度,节省了程序存储器的空间。3)使程序模块化、通用化,便于阅读、交流和共享。4)便于分块调试。----子程序单片机原理与接口技术(第2版).李晓

林.电子工业出版社返回目录4310:55在子程序调用过程中须解决以下两个方面的问题:1)保护现场和恢复现场。2)调用程序与被调用程序之间的参数传递。保护现场和恢复现场方法就是在进入子程序时,将需要保护的数据推入堆栈,而空出这些数据

所占用的工作单元,供子程序中使用。在返回调用程序之前,再将推入堆栈的数据弹出到原有的工作单元,恢复其原来的状态,使调用程序可以继续往下执行。4.2.5子程序----子程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回

目录4410:55参数传递子程序调用时,要特别注意主程序与子程序之间的信息交换问题。在调用一个子程序时,主程序应先把有关参数(子程序入口条件)放到某些约定的位置,子程序在运行时,可以从约定的位置得到有关参数。同样子程序结束前,也应把处理结果(出口条件)送到约定位置。返回后,

主程序便可从这些位置得到需要的结果,这就是参数传递。4.2.5子程序----参数传递单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4510:55参数传递大致可分为以下几种方法:1)传递数据将数据通过工作寄存器R0~R7和累加器来传送。即主程序和子

程序在交接处,通过上述寄存器和累加器存储同一参数。2)传送地址数据存放在数据存储器中,参数传递时只通过R0、R1或DPTR传递数据所存放的地址。3)通过堆栈传递参数在调用之前,先把要传送的参数压入堆栈,进入子程

序之后,再将压入堆栈的参数弹出到工作寄存器或者其他内存单元。4.2.5子程序----参数传递单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4610:55例4-10试编写程序,计算分析:a1、a2、...、a10存

放在内部RAM的20H开始的存储区域内,计算所得结果存放在R3、R2中。要求:平方运算编写成子程序SORT,主程序通过调用SORT并求和完成运算。参数的传递用累加器。4.2.5子程序----子程序应用单片机原理与接口技术(第2版).李晓林.电子工业出版

社返回目录4710:55ORG8000HMAIN:MOVR0,#20H;置数据指针MOVR7,#10;置计数初值MOVR3,#0;结果单元清零MOVR2,#0LOOP:MOVA,@R0;取数ACALLSORT;调用求平方子程序ADDA,R2;累加平方和MOVR2,AADDCA,#

0;加进位CyINCR0;修改指针DJNZR7,LOOP;未完,继续4.2.5子程序----子程序应用单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录4810:55SJMPENSORT:MOVD

PTR,#TAB;进入子程序查平方表MOVCA,@A+DPTRRET;返主程序TAB:DB0,1,4,9,16DB25,36,49,64,81EN:NOPEND4.2.5子程序----子程序应用单片机原理与接口技术(第2版).李

晓林.电子工业出版社返回目录4910:55例4-11设有50个用ASCII码表示的16进制数存放在内部RAM以30H为首址的连续单元中。要求将其转换成相应的16进制数并存放到外部RAM以4100H为首址的25个连续单元中。根据上述要求,使用堆栈传递参

数的方法编写程序。4.2.5子程序----子程序应用单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录5010:55ORG4000HMAIASH:MOVR0,#2FH;置取数指针R0初值,从30H开始MOVDPTR,#40FFH;置数据指针DPTRMOVSP,#20H;置堆栈指针S

P初值MOVR2,#19H;置循环计数器R2初值为25NELOOP:INCR0;修改R0INCDPTR;修改DPTR指下一个MOVA,@R0;取被转换的ASCII码并压入堆栈PUSHACCACALLSUBASH;调用SUBAS

H子程序POP1FH;相应的16进制数送1FH单元4.2.5子程序----子程序应用单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录5110:55INCR0;修改R0MOVA,@R0;取被转换的ASCII码并压入堆栈PUSHACCACA

LLSUBASH;调用SUBASH子程序POPACC;相应的16进制数送ASWAPA;作为高4位ORLA,1FH;合成两位16进制数MOVX@DPTR,A;送存数单元DJNZR2,NELOOP;转换结束否?若未完,则继续SJMPENSUB

ASH:MOVR0,SP;SP值不能改变,否则不能正确返回4.2.5子程序----子程序应用单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录5210:55DECR0DECR0XCHA,@R0;从堆栈取出被转换的数送ACLRCSUBBA,#3AH;为0~9的ASCII

码否?小于3AH?共减30HJCASCDTG;若是小于,则转ASCDTGSUBBA,#07H;若否,则再减去7,(A)-3AH-7H+0AH=(A)-37HASCDTG:ADDA,#0AH;转换成16进制数,XCHA,@R0;转换后的16进制数压入堆栈RETEN:NOPEND4.2

.5子程序----子程序应用单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录5310:55例4-12将内部RAM的20H单元中的1字节16进制数转换为两位ASCII码,存放在30H和31H两个单元中。分析:将转换ASCII码的运算编写成子程序HE

ASC,主程序通过调用HEASC完成数据转换。通过堆栈传递参数。4.2.5子程序----子程序应用单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录5410:55ORG8000HMAIN:MOVSP,#40H;建立堆栈指针MOVR0,#30H;置结果单元指针MO

VA,20H;将1字节16进制数的地址送ASWAPA;1字节16进制数高、低4位交换PUSHACC;参数压栈ACALLHEASC;调转换子程序HEASCPOPACC;弹出结果MOV@R0,A;存高位16进制数转换结果INCR0;修改指针PUSH20H

;参数压栈ACALLHEASC;调转换子程序HEASCPOPACC;弹出结果MOV@R0,A;存低位16进制数转换结果SJMPEN4.2.5子程序----子程序应用单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录5

510:55HEASC:MOVR1,SP;堆栈指针送R1DECR1DECR1;R1指向被转换数据XCHA,@R1;取被转换数据ANLA,#0FH;取一位16进制数ADDA,#2;修正ASCII码表的首地址MOVCA,@A+PC

;查表取对应的ASCII码XCHA,@R1;结果存放在堆栈区RET;取出断点,返主程序ASCTAB:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,40H,41H,42H,43H,44H,45HEN:NOPENDMAIN4.2.5子程序----子

程序应用单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录5610:554.3汇编语言程序设计实例例4-13多字节无符号数加法运算程序。编程说明:多字节运算一般是按照从低字节到高字节的顺序依次进行的。入口:

R0=被加数低位地址指针;R1=加数低位地址指针;R2=字节数。出口:R0=和数高位地址指针。4.3.1算术运算程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录5710:554.3汇编语言程序设计实例----算术运算程序ADDBIN:CLRCLOOP1:MOVA,@R0

;取被加数ADDCA,@R1;两数相加,带进位MOV@R0,AINCR0INCR1DJNZR2,LOOP1;未加完转LOOP1JNCLOOP2;无进位转LOOP2MOV@R0,#01HRETLOOP2:DECR0RET单片机原理与接口技术(第2版).李晓林.电子工业出版社返回

目录5810:55例4-14实现下列两位16进制数乘法运算程序。(R7R6)16×(R5R4)16→(R3R2R1R0)16编程说明:MCS-51乘法指令只能完成两个8位无符号数相乘,因此16位无符号数求积必须将它们分解成8位数相乘来实现。其

方法有“先乘后加”和“边乘边加”两种。现以“边乘边加”为例设计。程序如下:4.3汇编语言程序设计实例----算术运算程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录5910:55例4-14乘法运算程序ORG100

0HDMUL:MOVA,R6;第1个因数的低位送AMOVB,R4;第2个因数的低位送BMULAB;第1个因数的低位乘以第2个因数的低位MOVR0,A;积的低位送R0MOVR1,B;积的高位送R1MOVA,R7;第

1个因数的高位送AMOVB,R4;第2个因数的低位送BMULAB;第1个因数的高位乘以第2个因数的低位ADDA,R1;部分积相加,形成进位CyMOVR1,A;部分积相加送R1MOVA,B;部分积的进位Cy加到高位ADDCA,#00HMOVR2,AMOVA,R6;第1个因数的低位送AMOVB,

R5;第2个因数的高位送BMULAB;第1个因数的低位乘以第2个因数的高位(R7R6)16×(R5R4)16→(R3R2R1R0)16单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录6010:55ADDA,R1;部分积相加,形成进位CyMOVR1,A;回送

部分积MOVA,R2ADDCA,B;部分积相加MOVR2,A;回送部分积MOVA,#00H;部分积的进位Cy加到高位ADDCA,#00HMOVR3,AMOVA,R7;第1个因数的高位送AMOVB,R5;第2个因数的高位送BMULAB;第1个因数的高位乘以第2个因数的高位ADDA

,R2;部分积相加,形成进位CyMOVR2,A;回送部分积MOVA,R3ADDCA,B;部分积相加MOVR3,A;回送部分积RETEND(R7R6)16×(R5R4)16→(R3R2R1R0)16例4-14乘法运算程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目

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

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

R0,10H;除法移位次数LP:CLRC;移位MOVA,R4RLCAMOVR4,AMOVA,R5RLCAMOVR5,AMOVA,R64.3汇编语言程序设计实例----算术运算程序RLCAMOVR6,AMOVA,R7RLCAMOVR7,ALP1:MOVA,R6;部分余数减除

数SUBBA,R2MOVR1,AMOVA,R7SUBBA,R3JCSMALLMOVA,R1单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录6310:55MOVR6,AINCR4;商加1SJMPLP1SMALL:DJNZR0,LPMOV20H,R7;四舍五入J

B07H,ADD1CLRCMOVA,R6RLCAMOVR6,AMOVA,R7RLCASUBBA,R34.3汇编语言程序设计实例----算术运算程序JCRETURNJNZADD1MOVA,R6SUBBA,R2JCRE

TURNADD1:MOVA,R4;商加1ADDA,#01HMOVR4,AMOVA,R5ADDCA,#00HMOVR5,ARETURN:RET单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录6410:55例4-16双字节BCD码十进制

乘法程序。编程说明:从乘数高位开始进行BCD码移位乘法。入口:R1(高)和R0(低),被乘数;R3(高)和R2(低),乘数。出口:R7(最高),R6,R5,R4(最低),BCD码形式的积。程序(略)4.3汇编语言程序设计实例----算术运算

程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录6510:55例4-17数据排序程序。设在外部RAM的4200H数据缓冲区内存放一无符号数数组,其长度为100,起始地址为4200H。要求将它们按从大到小顺序排列,排序后存放在原数据缓冲区中,试编写相应的程序。程序(略)4.3汇

编语言程序设计实例----算术运算程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录6610:55例4-18将双字节二进制数转换成BCD码(十进制数)。编程说明:将二进制数转换成BCD码的数学模型为(a15a14…a1a0)2=

(a15×215+a14×214+…+a1×21+a0×20)10上式右侧即为欲求的BCD码。它可作如下变换:(a15×214+a14×213+…+a1)×2+a0程序(略)4.3汇编语言程序设计实例----数制转换程序单片机原理与接口技术(第2版).李晓林.电子工业出

版社返回目录6710:55例4-19BCD数转换成二进制数(双字节整数)。入口:R5(千位、百位)和R4(十位、个位)为BCD码。出口:R5R4(16位无符号二进制整数)。程序(略)4.3汇编语言程序设计

实例----数制转换程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录6810:55例4-204位二进制数转换为ASCII码。编程说明:由ASCII编码表可知转换方法。若4位二进制数小于10,则此二进制数加上30H,若大于10(等于1

0),则加上37H。入口:R2=4位二进制数。出口:R2=转换后的ASCII码。程序(略)4.3汇编语言程序设计实例----数制转换程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录6910:55例4-21ASCII码转换为4位二进制数,本程序完成

的是上例的逆过程。入口:R2=ASCII码。出口:R2=转换后的二进制数。程序(略)4.3汇编语言程序设计实例----数制转换程序单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录7010:55例4-22设某智能温度测量仪采用8位ADC,测量范围为10~100℃,仪

器采样并经滤波和非线性校正后(即温度与数字量之间的关系已为线性)的数字量为28H。那么,A0=10℃,Am=100℃,Nm=FFH=255,Nx=28H=40,则:Ax=(Am-A0)Nx/Nm+A0=(100-10)(40/255)+10=24.1℃程序(略)4

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

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

H~27H的连续单元中,结果保留在A中。单片机原理与接口技术(第2版).李晓林.电子工业出版社返回目录7210:554-6编写程序,将存放在内部RAM起始地址为20H和30H的两个3字节无符号相减,结结果存

放在内部RAM单元70H、71H、72H中(低位对应低字节)。4-7编写程序,实现两个双字节无符号数的乘法运算,乘数存放在R2和R3中(R2存放高字节,R3存放低字节,以下类同),被乘数存放在R6和R7中,积存放在R4、R5、R6和R7中。4-8假设在R0指向的片内RA

M区,存有20个16进制数的ASCII字串。将ASCII码转换为16进制数,然后两两合成一个字节,从低地址单元到高地址单元依次组合。4-9结合例25和图4-5编写线性标度变换程序。习题与思考题

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?