欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    系列汇编语言程序设计.ppt

    • 资源ID:6330835       资源大小:698KB        全文页数:55页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    系列汇编语言程序设计.ppt

    1,第五章MCS51汇编语言程序设计,刘建成ljc,2,4.1 汇编语言程序设计概述,汇编语言是面向机器硬件的语言,要求程序设计者 对MCS-51单片机具有很好的“软、硬结合”的功底。MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言),高级语言编程快捷,但程序长,占用存储空间大,执行慢;汇编语言产生的目标程序简短,占用存储空间小,执行快,能充分发挥计算机的硬件功能。无论是高级语言还是汇编语言,源程序都要转换成目标程序(机器语言)单片机才能执行。,连接/定位器L51,汇编语言源程序,汇编器A51,符号转换程序OHS51,绝对地址目标程序.BIN,C语言程序,浮动地址目标程序,编译器C51,HEX,图 3-1 两种语言源程序转换成目标程序,1伪指令,(1)起始指令 ORG nn功能:定义程序或数据块的起始地址。指示此语句后面的程序或数据块以nn为起始地址,连续存放在程序存储器中。指令地址 机器码源程序 ORG 2000H 2000H 78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,R0,ORG 3000H 3000H 23 TAB:DB 23H,100,A 3001H 64 3002H 41,4.2 伪指令与汇编程序基本格式,(2)字节定义 标号:DB(字节常数,或字符或表达式)功能:指示在程序存储器中以标号为起始地址的单元里存放的数为字节数据(八位二进制数)。例如 LN:DB 32,C,25H,-1;LNLN+2 地址单元依次存放20H,43H,25H,FFH,(3)字定义 标号:DW(字常数或表达式)作用:指示在程序存储器中以标号为起始地址的单元里存放的数为字数据(即16位的二进制数),例如:GH:DW 1234H,5678H,08,(5)等值指令 标号 EQU(数值表达式)表示EQU两边的量等值,用于为标号或标识符赋值。例如:X1 EQU 2000H X2 EQU 0FH MAIN:MOV DPTR,#X1;DPTR=2000H ADD A,#X2;A=A+0FH,(4)保留字节 标号:DS(数值表达式)作用:指示在程序存储器中保留以标号为起始地址的若干字节单元,其单元个数由数值表达式指定。例如 L1:DS 32;从L1地址开始保留32个存储单元。,(6)位定义 标号 BIT 位地址作用:同EQU指令,不过定义的是位操作地址。例如 AIC BIT P1.1,(7)汇编结束 END作用:指示源程序段结束。END指令放在程序的最后。A51汇编程序还有一些其它的伪指令。,8,2、汇编程序基本格式(1)汇编语言的语句格式:;(2)汇编程序的一般格式 ORG XXXXH 汇编语句1 汇编语句N END,返回本节,9,第四章 MCS51汇编语言程序设计,本章介绍以下内容汇编语言程序设计概述汇编语言伪指令源程序的编辑和汇编汇编语言程序基本结构形式程序设计举例,10,汇编语言程序基本结构形式,按结构化程序设计思想,任何复杂程序都可由顺序结构、分支结构、循环结构等构成,11,顺序结构,不同的操作顺序执行,没有分支、循环、子程序调用。多字节无符号数相加整个系统流程就是顺序结构,12,顺序程序设计,顺序结构程序是一种最简单、最基本的程序(也称为简单程序),它是一种无分支的直线形程序,按照程序编写的顺序依次执行。【例】两个8位无符号数相加,和仍为8位。假设两个无符号数X1,X2分别存放于内部RAM60H、61H单元中,求其和并将和送入62H单元。程序如下:,13,由于MCS-51指令系统中只有单字节加法指令,因此对多字节相加时运算,必须从低位字节开始分字节进行。最低字节可以使用ADD指令其它字节相加时要把低字节的进位考虑进去因此应使用ADDC指令。,顺序程序设计,14,【例】两个无符号双字节数相加。设被加数存放在内部存储器30H(高位字节)、31H(低位字节)单元,加数存放在内部存储器40H(高位字节)、41H(低位字节)单元,和存入30H(高位字节)、31H(低位字节)单元。,顺序程序设计,15,没有专门循环指令通过条件判断控制循环区分先执行后判断先判断后执行,循环控制,16,循环程序设计,循环程序一般由4部分组成。(1)置循环初值。(2)循环体。(3)循环修改。(4)循环控制。图(a)结构是“先执行后判断”,适用于循环次数已知的情况。图(b)结构是“先判断后执行”,适用于循环次数未知的情况。,17,循环程序设计,18,多字节无符号数相加 设被加数与加数分别在以ADR1与ADR2为初址的片内数据存储器区域中,自低字节起,由低到高依次存放;它们的字节数为L,要求加得的和放回被加数的单元。,19,参考程序如下 MOV R0,#ADR1 MOV R1,#ADR2 MOV R2,#L CLR CLOOP:MOV A,R0;通过R0间址,取得被加数的一;个字节 ADDC A,R1;通过R1间址,取得加数的一个字;节,与被加数的相应字节相加 MOV R0,A;加得的和通过R0间址放回原被;加数单元INC R0;修改指针,指向下一个相加的数INC R1DJNZ R2,LOOP;循环实现多字节数相加,20,分支程序,程序分支是通过条件转移指令实现的,即根据条件对程序的执行进行判断,满足条件则进行程序转移,不满足条件程序就顺序执行。在MCS-51指令系统中,通过条件到断实现单分支程序转移的指令有JZ、JNZ、CJNE和DJNZ等。此外还有以位状态作为条件进行程序分支的指令,如JC、JNC、JB、JNB和JBC等。使用这些指令,可以完成为0、为1、为正、为负以及相等、不相等等各种条件判断。,21,多分支程序转移,首先把分支程序按序号进行排列,然后按照序号值进行转移。假定分支转移序号最大值为n,则分支转移结构如图,22,但MCS51指令系统中没有多分支转移指令,无法使用一条指令完成多分支转移。要实现多分支转移,可采用以下几种方法。使用多条CJNE指令,通过逐次比较,实现多分支程序转移。使用查表方法实现多分支程序转移查表方法,但把转移指令直接放人表中使用堆栈操作实现多分支转移,多分支程序转移,23,使用CJNE指令实现多分支转移,分支序号值在A中,则可使用CJNE A,date,rel 指令实现多分支转移这种多分支方法的优点是层次清晰,程序简单易懂。但这种方法分支速度较慢,特别是层次较多时。此外分支入口地址应在8位偏移量的有效范围之内。,24,使用CJNE指令实现多分支转移,多分支转移流程图(与8088之INT21H中断相似),25,使用查表方法实现多分支程序转移,在程序中建立一个差值表,并将各分支入口地址与该表首址的差值按序排列其中。差值表首址送DPTR,分支序号值送A中,查表后就可通过转移指令JMP A+DPTR进行分支。,26,使用查表方法实现多分支程序转移,例有四个分支程序段,各分支程序段依次是从内部RAM取数从外部RAM低256E范围取数从外部RAM 4KB范围取数从外部RAM 64KB范围取数R0中存低8位地址,R1中存放高8位地址,R3中存放分支序号值。brtab为差值表首地址,br0_brtab、br3_brtab为差值,27,使用查表方法实现多分支程序转移,28,使用查表方法实现多分支程序转移,29,使用查转移指令表方法实现多分支程序转移,假定有多个分支程序,使这些分支程序都通过绝对转移指令AJMP进行转移,并把这些转移指令按序写入表中把分支序号值乘以2的原因是AJMP指令为2字节指令。分支实现过程是根据分支序号值(R3),通过JMP指令转向BRTAB表中的某一条AJMP指令,然后再执行该AJMP指令,而把程序转移到指定分支。因此这种分支方法实际上是通过两次转移而实现,30,使用查转移指令表方法实现多分支程序转移,31,使用查转移指令表方法实现多分支程序转移,使用这种方法最多可实现128个分支程序的转移由于AJMP指令的转移范围是2KB,可以在2KB范围内安排分支程序因此分支范围较大,便于分支数目较多时应用如把表中的AJMP改为长转移LJMP楷今,则分支程序可以在64KB范围内转移长转移LJMP为3字节指令。,32,使用堆栈操作实现多分支转移,把分支程序入口地址存放在转移表中(低8位在前,高8位在后)先把分支程序人口地址进栈然后利用返回指令RET把分支程序入口地址装入PC,所以接着就转去执行分支程序,33,使用堆栈操作实现多分支转移,34,第四章 MCS51汇编语言程序设计,本章介绍以下内容汇编语言程序设计概述汇编语言伪指令源程序的编辑和汇编汇编语言程序基本结构形式程序设计举例,35,4.3 汇编语言程序设计举例,算术运算程序加减法乘法除法数制转换ASCII码与16进制相互转换BCD码与16进制相互转换,36,4.3 汇编语言程序设计举例,定时程序在单片机的控制应用中,常有定时的需要如定时中断、定时检测和定时扫描等定时功能除可以使用定时器计数器实现之外更多地是使用定时程序完成。定时程序是典型的循环程序,它是通过执行一个具有固定延迟时间的循环程序来实现延时的。因此也把定时程序称之为延时程序。定时程序只能使用汇编语言编写。,37,4.3 汇编语言程序设计举例,定时程序短时间长时间调整定时时间一个程序多种定时,38,定时程序,1单循环定时程序MOV R5,#TlME LOOP:NOP;1机器周期 NOP;1机器周期 DJNZ R5,LOOP;2机器周期如单片机的晶振颇率为6MHz,则一个机器周期是2uS。因此一次循环的延迟时间为8uS,程序总的延迟时间为8xtime(uS)。本程序的实际延迟时间决定于装入寄存器R5的定时时间常数。R5是8位寄存器,因此这个程序的最长定时时间为256X8=2048(uS)。即定时范围是2048uS(2.048mS)-时间延迟比较小,39,4.3 汇编语言程序设计举例,短时间定时程序 12M晶振,50ms延时Delay:MOV R7,#125DEL1:MOV R6,#200DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RET调用CALL DelayMOV R7,#?CALL Delay,40,定时程序,2.较长时间的定时程序 为了加长定时时间,通常采用多重循环的方法。例如下列双重循环的定时程序,最长可延时262658个机器周期,6Mhz晶振时,即525316uS(525mS或0.5S)MOV R5,#TIME1LOOP2:MOV R4,#TIME2LOOP1:NOPNOP DJNZ R4,LOOP1 DJNZ R5,LOOP2定时时间微调:时间系数、循环时间长度,41,定时程序,3.以一个基本的延时程序满足不同的定时要求如果一个系统中有多个定时需要,我们就可以设计一个基本的延时程序,使其延迟时间为各定时时间的最大公约数,然后就可以以此基本程序作为子程序,通过调用的方法实现所需要的不同定时。例如:设计一个1秒延时子程序,可以实现定时时间分别为5秒、10秒和20秒等的定时,42,数字滤波算法,由于工业生产的现场环境非常恶劣,各种干扰源很多,计算机系统通过输入通道采集到的数据信号,虽经硬件电路的滤波处理,但仍会混有随机干扰噪声。因此,为了提高系统性能,达到准确的测量与控制,一般情况下还需要进行数字滤波。数字滤波:计算机系统对输入信号采样多次,然后用某种计算方法进行数字处理,以削弱或滤除干扰噪声造成的随机误差,从而获得一个真实信号的过程。根据预定的滤波算法编制相应的程序,实质上是一种程序滤波。因而可靠性高,稳定性好,修改滤波参数也容易,而且一种滤波子程序可以被多个通道所共用,因而成本很低。另外,数字滤波可以对各种干扰信号,甚至极低频率的信号进行滤波。它的不足之处是需要占用CPU的机时。,43,数字滤波算法,常用的方法有以下几种:平均值法:对一点数据连续采样多次(可取35次),以平均值作为该点的采样结果。这种方法可以减少系统的随机干扰对采集结果的影响。去极值平均 加权平均 比较舍取法:对每个采样点连续采样几次,根据所采样数据的变化规律,确定取舍办法来剔除偏差数据。例如,“采三取二”,即对每个采样点连续采样三次,取两次相同数据作为采样结果。,44,中值法:对一个采样点连续采集多个信号,并对这些采样值进行比较,取中值作为该点的采样结果。X1 X2 X3 X4X5,取X3中值滤波能有效地滤去由于偶然因素引起的波动(脉冲)或采样器的不稳定造成的误码等引起的脉冲干扰。对缓慢变化的过程变过采用中值滤波有效果。中值滤波不宜用于快速变化的过程参数。,数字滤波算法,45,一阶递推数字滤波法:利用软件完成RC低通滤波器的算法。RC滤波器(惯性滤波)的传递函数 写成差分方程其中:a数字滤波器时间常数;x(k)第n次采样时的滤波器的输入;Y(k1)第n1次采样时的滤波器的输出。Yn第n次采样时的滤波器的输出。,数字滤波算法,46,5、防脉冲干扰复合滤波法将算术平均值法和中值滤波法结合起来,便可得到防脉冲干扰平均值法。它是先用中值滤波原理滤除由于脉外干扰引起误差的采样值,然后把剩下的采样值进行算术平均。,数字滤波算法,47,6、滑动平均滤波在每个采样周期只采样一次,将这一次采样值和过去的若干次采样值一起求平均,所得结果即为有效采样值。具体作法可由循环队列结构方式来实现数据的存放针对:周期性干扰信号选取何种方法必须根据信号的变化规律予以确定。,数字滤波算法,48,查表程序,查表,就是根据变量x,在表格中查找y,使y=f(x)。在计算机控制应用中,查表程序是很有用的程序,常用于实现LED显示器控制、波形输出、非线性修正、数据补偿、非线性函数转换、计算、代码转换等,49,查表程序,MCS-51指令系统中有专用的查表指令:MOVC A,ADPTR适用于在整个64K ROM范围内查表,数据表可以放在程序任何位置。MOVC A,A PC适用于在“本地”范围内查表编写查表程序,50,查表程序,已知R0低四位有一个十六进制数(0F中一个),试编出能把它转换成相应ASCII码并送入R0的程序。,ORG 0400H0400 E8 MOV A,R0;取转换值到A0401 540F ANL A,0FH;屏蔽高四位0403 2403 ADD A,03H;地址调整0405 83 MOVC A,A+PC;查表0406 F8 MOV R0,A;存结果0407 80FE SJMP 0409 ASCTAB:DB 0,1,2,3,4 DB 5,6,7,8,9 DB A,B,C,D,E,F END,51,4.3 汇编语言程序设计举例,极值查找程序最大值、最小值数据排序程序冒泡算法数据检索程序顺序检索对分检索,52,数据排序程序,常用气泡法(两两比较法)它先使E100和E99进行比较,若E100E99,则两数交换,否则不动,然后E99和E98进行比较,按同样的原则,决定是否交换,一直比较下去,最后完成E2和E1的比较及交换。经过N-1次比较后,E1位置必然得到数组中的最大值。犹如一个气泡冒到水顶。如此下去,经过N!次比较便完成N个数据的排序。,53,例:100个数据(单字节),从小到大进行排序,MOV R2,#100BUB:MOV R0,#20HCLR F0DEC R2BL:CJNE R2,#0,BBMOV 7F,R2MOV 20H,R0MOV A,R0INC R0MOV 21H,R0,CJNE A,21H,LOPLOP:JC BMOV R0,20HDEC R0MOV R0,21HINC R0SETB F0B:DJNZ 7FH,BLJB F0,BUBBB:SJMP$,数据排序程序,54,如果数据是双字节数,一次需要比较两个字节,从小到大进行排序。,数据排序程序,55,数据检索程序,数据检索程序是在数据区中查找关键字的操作有两种数据检索方法,即顺序检索和对分检索。顺序检索:把关键字与数据区中的数据从前向后逐个比较,判断是否相等对分检索:按对分原则取数进行关键字比较(前提是数据已排好序),具体过程是:取数组中间位置的数与关键字比较,如果相等则检索成功。如果取数大于关键字,则下次对分检索的范围是从数据区起点到本次取数。如果取数小于关键字,则下次对分检索的范围是从本次取数到数据区终点。,

    注意事项

    本文(系列汇编语言程序设计.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开