ImageVerifierCode 换一换
格式:PPT , 页数:102 ,大小:234.50KB ,
资源ID:1897102      下载积分:18 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/1897102.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(MCS-51汇编语言程序设计.ppt)为本站上传会员【w****g】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

MCS-51汇编语言程序设计.ppt

1、第 4 章 汇编语言程序设计简介 第第4章章 汇编语言程序设计简介汇编语言程序设计简介 4.1 汇编语言概述汇编语言概述 4.2 汇编语言程序设计汇编语言程序设计4.3 汇编程序设计实例汇编程序设计实例 1可整理ppt第 4 章 汇编语言程序设计简介 4.1 汇编语言概述4.1.1 程序设计语言的分类及特点程序设计语言的分类及特点 能能够够完完成成一一定定功功能能的的指指令令序序列列称称为为程程序序,用用来来设设计计计计算算机机程程序序的的语语言言称称为为程程序序设设计计语语言言,按按照照语语言言的的结结构构及及功功能能程程序设计语言可分为:序设计语言可分为:机器语言机器语言、汇编语言汇编语言

2、和和高级语言高级语言。2可整理ppt第 4 章 汇编语言程序设计简介 1机器语言机器语言 是是计计算算机机所所能能识识别别的的唯唯一一语语言言,由由二二进进制制代代码码0和和1构构成成指令和数据。指令和数据。其其具具有有效效率率高高、响响应应速速度度快快的的特特点点,但但由由于于机机器器语语言言编编写写的的程程序序依依赖赖于于计计算算机机的的结结构构,可可移移植植性性差差,繁繁琐琐且且难难于于记记忆、识别和调试,通常编程时,不采用机器语言。忆、识别和调试,通常编程时,不采用机器语言。3可整理ppt第 4 章 汇编语言程序设计简介 2汇编语言汇编语言 是一种是一种符号语言符号语言,指令由,指令由

3、助记符表示助记符表示。与与机机器器语语言言相相比比,汇汇编编语语言言具具有有指指令令容容易易记记忆忆、理理解解、识识别别和和可可读读性性好好的的优优点点,但但实实质质上上由由于于汇汇编编语语言言也也是是面面向向机机器器的的语语言言,是是机机器器语语言言程程序序的的符符号号表表示示,所所以以用用户户必必须须熟熟悉悉机机器器的的硬硬件件结结构构和和指指令令系系统统,掌掌握握计计算算机机的的工工作作过过程程才才能能熟熟练编程。练编程。另另外外,汇汇编编语语言言所所编编写写的的源源程程序序与与经经过过汇汇编编所所产产生生的的机机器器代代码码程程序序之之间间有有明明显显的的一一一一对对应应关关系系,所所

4、以以汇汇编编语语言言编编写写的程序同样也存在通用性差,程序不能移植的缺点。的程序同样也存在通用性差,程序不能移植的缺点。4可整理ppt第 4 章 汇编语言程序设计简介 3高级语言高级语言 高高级级语语言言是是接接近近于于人人的的自自然然语语言言形形式式的的计计算算机机编编程程语语言言的总称,例如的总称,例如C语言、语言、BASIC语言等都是高级语言。语言等都是高级语言。和和汇汇编编语语言言相相比比,高高级级语语言言指指令令简简单单易易学学,用用户户容容易易掌掌握握,且且高高级级语语言言程程序序不不依依赖赖于于具具体体的的硬硬件件结结构构和和指指令令系系统统,程程序序可可移移植植性性好好,但但是

5、是高高级级语语言言编编写写的的源源程程序序必必须须经经过过编编译译或或解解释释程程序序翻翻译译成成目目标标程程序序,机机器器才才能能执执行行,而而生生成成的的目目标标程程序序需需占占用用较较多多的的存存储储单单元元,执执行行时时间间较较长长,运运行行效效率较低率较低。5可整理ppt第 4 章 汇编语言程序设计简介 4.1.2 单片机汇编语言源程序的编辑和汇编单片机汇编语言源程序的编辑和汇编汇编语言的指令类型汇编语言的指令类型 汇汇编编语语言言源源程程序序由由两两种种类类型型的的汇汇编编语语言言语语句句(即即指指令令)构构成成。语语句句按按性性质质不不同同分分为为两两类类:指指令令性性语语句句(

6、机机器器指指令令)和和指示性语句(伪指令)指示性语句(伪指令)。(1)机器指令)机器指令 指指令令系系统统中中的的全全部部指指令令,每每条条指指令令都都有有对对应应的的机机器器代代码码,是机器真正能够执行的指令。是机器真正能够执行的指令。(2)伪指令伪指令 为为汇汇编编程程序序在在汇汇编编过过程程中中提提供供控控制制或或指指示示信信息息,并并不不直直接接产生机器代码,属于机器不能执行的指令类型。产生机器代码,属于机器不能执行的指令类型。6可整理ppt第 4 章 汇编语言程序设计简介 汇编汇编 计计算算机机不不能能直直接接识识别别和和执执行行源源程程序序。因因此此源源程程序序必必须须经经过过汇汇

7、编编程程序序汇汇编编产产生生机机器器码码目目标标程程序序文文件件,程程序序才才能能执执行行。这种将汇编语言源程序转换成机器语言程序的过程称为这种将汇编语言源程序转换成机器语言程序的过程称为汇编汇编。汇编语言汇编语言源程序源程序汇编程序汇编程序目标文件和源程序列表目标文件和源程序列表经过经过汇编后汇编后7可整理ppt第 4 章 汇编语言程序设计简介 汇编语言源程序的汇编过程分为汇编语言源程序的汇编过程分为手工汇编手工汇编和和机器汇编机器汇编。所所谓谓手手工工汇汇编编,即即采采用用人人工工查查指指令令表表的的方方法法将将汇汇编编指指令令翻翻译成相应机器代码。译成相应机器代码。通通常常源源程程序序的

8、的人人工工汇汇编编需需要要两两次次才才能能完完成成,第第一一次次汇汇编编查查找每条指令的机器代码,第二次汇编完成地址偏移量的计算。找每条指令的机器代码,第二次汇编完成地址偏移量的计算。由由于于手手工工汇汇编编需需要要计计算算和和查查找找,繁繁琐琐而而且且容容易易出出错错,而而且且程程序序修修改改时时可可能能会会引引起起指指令令的的地地址址变变化化,转转移移指指令令的的偏偏移移量量也也随随之之改改变变,需需要要重重新新计计算算,所所以以手手工工汇汇编编主主要要应应用用于于设设计计短短小小程序或调试程序的场合。程序或调试程序的场合。8可整理ppt第 4 章 汇编语言程序设计简介 所所谓谓机机器器汇

9、汇编编,即即采采用用汇汇编编程程序序对对源源程程序序进进行行自自动动汇汇编编,由由于于单单片片机机软软硬硬件件资资源源的的限限制制,该该过过程程通通常常借借助助于于PC系系统统机机实实现现,象象这这种种借借助助于于一一种种计计算算机机而而为为另另一一种种计计算算机机产产生生目目标标代代码的汇编方式又称为码的汇编方式又称为交叉汇编交叉汇编。交交交交叉叉叉叉汇汇汇汇编编编编的的原原理理类类似似于于手手工工汇汇编编,在在汇汇编编程程序序中中通通常常存存入入了了两两张张表表,即即MCS-51单单片片机机的的指指令令代代码码表表和和伪伪指指令令表表。汇汇编编程程序序通通常常通通过过两两次次扫扫描描完完成

10、成汇汇编编,第第一一次次扫扫描描查查找找源源程程序序中中每每条条指指令令的的机机器器代代码码,第第二二次次扫扫描描完完成成地地址址偏偏移移量量的的计计算算,汇汇编后生成目标文件和列表文件。这是目前应用较广的汇编方法。编后生成目标文件和列表文件。这是目前应用较广的汇编方法。9可整理ppt第 4 章 汇编语言程序设计简介 汇编的主要功能为:汇编的主要功能为:(1)确定程序中每条汇编语言指令的指令机器码。)确定程序中每条汇编语言指令的指令机器码。(2)确定每条指令在程序存储器中的存放地址。)确定每条指令在程序存储器中的存放地址。(3)提提供供语语法法、编编辑辑等等方方面面的的错错误误信信息息,但但不

11、不能能提提供供程程序序的的逻辑错误。逻辑错误。(4)产产 生生 目目 标标 执执 行行 文文 件件(*.OBJ/*.HEX)和和 列列 表表 文文 件件(*.LST)。)。10可整理ppt第 4 章 汇编语言程序设计简介 4.1.3 伪伪 指指 令令 一、一、汇编起始指令汇编起始指令 ORG 指令格式为指令格式为:ORG 16位地址位地址 该该指指令令的的作作用用是是指指明明后后面面的的程程序序或或数数据据块块的的起起始始地地址址,它总是出现在每段源程序或数据块的开始。它总是出现在每段源程序或数据块的开始。16 位位地地址址,确确定定了了此此语语句句后后面面第第一一条条指指令令或或第第一一个个

12、数数据据的的地地址址,此此后后的的源源程程序序或或数数据据块块就就依依次次连连续续存存放放在在以以后后的的地地址址内内,直到遇到另一个直到遇到另一个ORG指令为止。指令为止。11可整理ppt第 4 章 汇编语言程序设计简介 例例:ORG 2000H MOV SP,60H MOV R0,2FH MOV R2,0FFH ORG伪伪指指令令说说明明其其后后面面程程序序的的目目标标代代码码在在存存储储器器中中存存放放的的起始地址是起始地址是2000H,即即 存储器地址存储器地址 目标程序目标程序 2000H 75 81 60 2003H 78 2F 2005H 7A FF 12可整理ppt第 4 章

13、汇编语言程序设计简介 二、等值指令二、等值指令EQU 指令格式指令格式:字符名称字符名称 EQU 数字或汇编符号数字或汇编符号 功能功能:使指令中的字符名称等价于给定的数字或汇编符号。使指令中的字符名称等价于给定的数字或汇编符号。使使用用等等值值指指令令可可给给程程序序的的编编制制、调调试试、修修改改带带来来方方便便:如如果果在在程程序序中中要要多多次次使使用用到到某某一一地地址址,由由EQU指指令令将将其其赋赋值值给给一一个个字字符符名名称称,一一旦旦需需要要对对其其进进行行变变动动,只只要要改改变变EQU命命令令后后面面的的数数字字即即可可,而而不不需需要要对对程程序序中中涉涉及及到到该该

14、地地址址的的所所有有指令逐句进行修改。指令逐句进行修改。13可整理ppt第 4 章 汇编语言程序设计简介 注注意意,由由EQU等等值值的的字字符符名名称称必必须须先先赋赋值值后后使使用用,且且在同一个源程序中,同一个标号只能赋值一次。在同一个源程序中,同一个标号只能赋值一次。例例:PA8155 EQU 8001H即给标号即给标号PA8155赋值为赋值为8001H。14可整理ppt第 4 章 汇编语言程序设计简介 三、三、定义字节指令定义字节指令DB 指令格式指令格式:标号标号:DB 8位二进制数表位二进制数表 功功能能:把把 8 位位二二进进制制数数表表依依次次存存入入从从标标号号开开始始的的

15、连连续续的的存存储单元中。储单元中。格格式式中中,标标号号区区段段可可有有可可无无,DB指指令令之之后后的的 8 位位二二进进制制数数表表是是字字节节常常数数或或用用逗逗号号隔隔开开的的字字节节串串,也也可可以以是是用用引引号号括括起起来来的的ASCII码字符串码字符串 (一个一个 ASCII字符相当于一个字节字符相当于一个字节)。例例:15可整理ppt第 4 章 汇编语言程序设计简介 ORG 1000HBUF1:DB 38H,7FH,80HBUF2:DB 45H,66H ORG伪伪指指令令指指定定了了标标号号BUF1的的地地址址为为1000H,而而DB伪伪指指令令是是将将其其后后的的二二进进

16、制制数数表表38H,7FH,80H依依次次存存放放在在1000H,1001H,1002H 3 个个连连续续单单元元之之中中,BUF2也也是是一一个个标标号号,其其地地址址与与前前一一条条伪伪指指令令连连续续,即即1003H,1004H地地址址单单元元中依次存放中依次存放 45H,66H。16可整理ppt第 4 章 汇编语言程序设计简介 四、四、定义字指令定义字指令DW 指令格式指令格式:标号标号:DW 16 位数据表位数据表 该该指指令令的的功功能能与与DB相相似似,区区别别仅仅在在于于从从指指定定地地址址开开始始存存放放的的是是指指令令中中的的 16 位位数数据据,而而不不是是字字节节串串。

17、每每个个 16 位位数数据据要要占占两两个个存存储储单单元元,高高8 位位先先存存,低低 8 位位后后存存,这这和和MCS-51指指令中的令中的16位数据存放顺序是一致的。位数据存放顺序是一致的。17可整理ppt第 4 章 汇编语言程序设计简介 五、五、DS(Define Store)定义存储区指令定义存储区指令功功能能为为:从从指指定定的的单单元元地地址址开开始始,保保留留一一定定数数量量的的存存储储单单元元,以备使用。以备使用。指令格式:指令格式:标号:标号:DS 表达式表达式其中,表达式指定保留的内存单元个数。其中,表达式指定保留的内存单元个数。例如,例如,ORG 1000H DS 10

18、TAB:DB 10H 汇汇编编结结果果:从从1000H地地址址处处开开始始,保保留留10个个字字节节单单元元。(100AH)=10H。18可整理ppt第 4 章 汇编语言程序设计简介 六、六、BIT位地址符号指令位地址符号指令指指令令功功能能为为:将将位位地地址址赋赋值值给给指指定定的的符符号号名名称称,通通常常用用于于位位符符号地址的定义。号地址的定义。指令如下:指令如下:字符名称字符名称BIT 位地址位地址例如,例如,X1 BIT P1.0 汇汇编编结结果果为为将将位位地地址址P1.0赋赋给给变变量量X1,即即在在程程序序中中便便可可使用使用X1代替位地址代替位地址P1.0。19可整理pp

19、t第 4 章 汇编语言程序设计简介 七、七、DATA数据地址赋值指令数据地址赋值指令 指指令令功功能能:将将数数据据地地址址或或指指令令代代码码地地址址赋赋值值给给所所指指定定的标号。通常在程序中用于定义数据地址。指令格式如下:的标号。通常在程序中用于定义数据地址。指令格式如下:标号:标号:DATA 表达式表达式例如,例如,AA:DATA 2000H汇编结果为:汇编结果为:AA=2000H。20可整理ppt第 4 章 汇编语言程序设计简介【注意】:【注意】:DATA与与EQU的区别在于的区别在于:(1)EQU定定义义的的标标识识符符在在汇汇编编时时不不在在符符号号表表中中登登记记,因因此此必须

20、先定义后使用;必须先定义后使用;(2)DATA定定义义的的标标识识符符汇汇编编时时在在符符号号表表中中登登记记,所所以以可可以先使用后定义。以先使用后定义。21可整理ppt第 4 章 汇编语言程序设计简介 八、八、汇编结束指令汇编结束指令END 指令格式指令格式:标号标号:END 地址或标号地址或标号 格式中标号以及格式中标号以及END后面的地址或标号可有可无。后面的地址或标号可有可无。功能功能:提供汇编结束标志。提供汇编结束标志。汇汇编编程程序序遇遇到到 END后后就就停停止止汇汇编编,对对 END以以后后的的语语句句不予处理不予处理,故故 END应放在程序的结束处。应放在程序的结束处。22

21、可整理ppt第 4 章 汇编语言程序设计简介 4.2 汇编语言程序设计汇编语言程序设计 4.2.0 程序设计步骤程序设计步骤4.2.1 顺序结构顺序结构4.2.2 分支结构分支结构4.2.3 循环结构循环结构4.2.4 子程序调用子程序调用23可整理ppt第 4 章 汇编语言程序设计简介 4.2.0 程序设计程序设计 步骤步骤 对对于于简简单单程程序序的的编编写写,程程序序设设计计者者往往往往能能够够立立即即完完成成软软件件的的构构思思与与编编写写,而而对对于于比比较较复复杂杂的的程程序序设设计计问问题题,则则需需要要科科学学合合理理的的程程序序设设计计步步骤骤。从从软软件件工工程程角角度度来

22、来说说,开开发发一一个个应用程序,一般需要经过以下几个步骤:应用程序,一般需要经过以下几个步骤:24可整理ppt第 4 章 汇编语言程序设计简介 25可整理ppt第 4 章 汇编语言程序设计简介 4.2.1 顺序程序设计顺序程序设计 顺序程序是程序设计中最基本的结构,又称为简单程顺序程序是程序设计中最基本的结构,又称为简单程序。特点为顺序执行每一条指令,直到最后。其执行过程序。特点为顺序执行每一条指令,直到最后。其执行过程如图如图4-3所示。所示。S1S2图4-3 顺序结构26可整理ppt第 4 章 汇编语言程序设计简介 【例【例 1】两个无符号双字节数相加。两个无符号双字节数相加。设设被被加

23、加数数存存放放于于内内部部RAM的的40H(高高位位字字节节),41H(低低位位字字节节),加加数数存存放放于于50H(高高位位字字节节),51H(低低位位字字节节),和数存入和数存入 40H和和41H单元中。单元中。27可整理ppt第 4 章 汇编语言程序设计简介 程序如下程序如下:START:CLR C ;将将Cy清零清零 MOV R0,41H ;将被加数地址送数据指针将被加数地址送数据指针R0 MOV R1,51H ;将加数地址送数据指针将加数地址送数据指针R1 AD1:MOV A,R0 ;被加数低字节的内容送入被加数低字节的内容送入AADD A,R1 ;两个低字节相加两个低字节相加MO

24、V R0,A ;低字节的和存入被加数低字节中低字节的和存入被加数低字节中 DEC R0 ;指向被加数高位字节指向被加数高位字节 DEC R1 ;指向加数高位字节指向加数高位字节 MOV A,R0 ;被加数高位字节送入被加数高位字节送入AADDC A,R1 ;两个高位字节带两个高位字节带Cy相加相加 MOV R0,A ;高位字节的和送被加数高位字节高位字节的和送被加数高位字节 RET 28可整理ppt第 4 章 汇编语言程序设计简介 4.2.2 分支程序设计分支程序设计1.分支程序结构分支程序结构2.一般分支程序设计一般分支程序设计3.分支表法实现多向分支程序的设计分支表法实现多向分支程序的设计

25、29可整理ppt第 4 章 汇编语言程序设计简介 条条件件S1S2YN条件条件S1条件条件NS2S1Sn(a)单分支)单分支 (b)双分支)双分支 (c)多分支)多分支1.分支程序结构分支程序结构30可整理ppt第 4 章 汇编语言程序设计简介【例【例5】x,y均为均为8位二进制数位二进制数,设设 x存入存入R0,y存入存入R1,求解求解:2.一般分支程序结构实例一般分支程序结构实例31可整理ppt第 4 章 汇编语言程序设计简介 程序如下程序如下:START:CJNE R0,00H,SUL1;R0中的数与中的数与00比较不等转移比较不等转移MOV R1,00H;相等相等,R1 0 SJMP

26、SUL2 SUL1:JC NEG ;两数不等两数不等,若若(R0)0,则则 R101H SJMP SUL2 NEG:MOV R1,0FFH;(R0)0,则则 R10FFH SUL2:RET 32可整理ppt第 4 章 汇编语言程序设计简介【例例 6】比比较较两两个个无无符符号号数数的的大大小小。设设外外部部 RAM 的的存存储储单单元元ST1和和 ST2中中存存放放两两个个不不带带符符号号的的二二进进制制数数,找找出出其其中中的的大大数数存存入入外外部部 RAM 中中的的 ST3单元中。单元中。33可整理ppt第 4 章 汇编语言程序设计简介 程序如下:程序如下:ORG 1000H ST1 E

27、QU 2000H ST2 EQU 2100H ST3 EQU 2200H START:CLR C ;清零清零Cy MOV DPTR,ST1 ;第一个数的指针第一个数的指针 MOVX A,DPTR ;取第一个数取第一个数 MOV R2,A ;保存保存 MOV DPTR,ST2 ;第二个数的指针第二个数的指针 MOVX A,DPTR ;取第二个数取第二个数 CLR C 34可整理ppt第 4 章 汇编语言程序设计简介 SUBB A,R2;两数比较两数比较JNC BIG1;若第二个数大若第二个数大C=1,则转则转XCH A,R2;第一个数大第一个数大BIG0:MOV DPTR,ST3 MOVX DP

28、TR,A;存大数存大数RETBIG1:MOVX A,DPTR;第二个数大第二个数大SJMP BIG0RET 35可整理ppt第 4 章 汇编语言程序设计简介 在实际应用时,通常遇到根据某变量取值不同从而转向不在实际应用时,通常遇到根据某变量取值不同从而转向不同分支的题目,这时经常采用分支表法。常用的分支表主要有同分支的题目,这时经常采用分支表法。常用的分支表主要有三种形式:三种形式:转移指令表转移指令表、分支地址表分支地址表和和地址偏移量表地址偏移量表。实质上都是利用散转指令实质上都是利用散转指令JMP A+DPTR来实现的。的目来实现的。的目标地址。标地址。3.分支表法实现多向分支程序的设计

29、分支表法实现多向分支程序的设计间接转移指令间接转移指令 JMP A+DPTR;PCA+DPTR实现散转的方法主要有两种:实现散转的方法主要有两种:(1)累加器)累加器A清零,根据清零,根据DPTR的内容决定转移的目标地址。的内容决定转移的目标地址。(2)DPTR的值作为基址不变,根据累加器的值作为基址不变,根据累加器A的内容决定转移的内容决定转移的目标地址。的目标地址。36可整理ppt第 4 章 汇编语言程序设计简介【例【例7】根据】根据R2的内容,转向相应的分支程序。即:的内容,转向相应的分支程序。即:R2=0,转向,转向PROG0R2=1,转向,转向PROG1R2=n,转向,转向PROGn

30、可采用方法:可采用方法:(1)使用转移指令表。)使用转移指令表。(2)使用分支地址表。)使用分支地址表。(3)使用地址偏移量表。)使用地址偏移量表。37可整理ppt第 4 章 汇编语言程序设计简介(1)使用转移指令表。)使用转移指令表。所谓转移指令表即由转移指令组成的分支表,如图所示。所谓转移指令表即由转移指令组成的分支表,如图所示。JMPTAB:AJMP PROG0 JMPTAB:LJMP PROG0 AJMP PROG1 LJMP PROG1 AJMP PROGn LJMP PROGn (a)(b)图图4-8转移指令表转移指令表38可整理ppt第 4 章 汇编语言程序设计简介 设转移指令表

31、的标号为设转移指令表的标号为JMPTAB,分支数为,分支数为5,解题思路,解题思路分析如图所示。分析如图所示。DPTRJMPTABDPTRJMPTABA+DPTRJMPTAB+A+DPTRJMPTAB+R23R23JMP A+DPTRJMP A+DPTRLJMP PROG0LJMP PROG0LJMP PROGnLJMP PROGnLJMP PROG1LJMP PROG139可整理ppt第 4 章 汇编语言程序设计简介 MOV DPTR,#JMPTAB;将;将JMPTABDPTRMOV A,R2MOV B,#03MUL AB ;R23BAPUSH A ;暂存乘积的低位字节;暂存乘积的低位字节A

32、MOV A,BADD A,DPH ;将乘积的高位字节;将乘积的高位字节B+DPHDPHMOV DPH,A ;POP A ;将暂存的;将暂存的A内容恢复内容恢复JMP A+DPTR ;散转;散转;转移指令表;转移指令表JMPTAB:LJMP PROG0 LJMP PROG1 LJMP PROG5 PROG0:PROG1:PROG5:JMP A+DPTR;PC(A)+(DPTR)40可整理ppt第 4 章 汇编语言程序设计简介 若转移指令表由若转移指令表由2字节指令字节指令AJMP构成,构成,M取值应为取值应为2,且,且各各分支程序的入口地址分支程序的入口地址PROG0、PROG1必须与必须与 转

33、移指令表处转移指令表处于同一个于同一个2KB的存储地址空间之内的存储地址空间之内,而,而LJMP指令表则没有这指令表则没有这个限制。个限制。使用使用AJMP转移指令表的程序如下:转移指令表的程序如下:MOV DPTR,#JMPTAB;将;将JMPTABDPTRCLR CMOV A,R2RLC A ;R22AJNC NOADD ;判断是否有进位;判断是否有进位INC DPH;若有进位,将进位加到高字节;若有进位,将进位加到高字节DPHNOADD:JMP A+DPTR;散转;散转;散转转移指令表;散转转移指令表JMPTAB:AJMP PROG0AJMP PROG1 AJMP PROG5 PROG0

34、PROG1:PROG5:41可整理ppt第 4 章 汇编语言程序设计简介(2)使用分支地址表。)使用分支地址表。所谓分支地址表是指由各个分支程序的入口地址组成的线性表,所谓分支地址表是指由各个分支程序的入口地址组成的线性表,每个入口地址占两个连续字节单元。每个入口地址占两个连续字节单元。设设PROG0PROGn为分支程序入口地址,分支地址表如图所为分支程序入口地址,分支地址表如图所示。示。BRANCHTAB:DW PROG0 DW PROG1 DW PROGn42可整理ppt第 4 章 汇编语言程序设计简介 DPTRBRANCHTABDPTRBRANCHTABAR22AR22JMP A+DP

35、TRJMP A+DPTR 分支程序分支程序PROG0PROG0 分支程序分支程序PROGnPROGn分支程序分支程序PROG1PROG1DPTRDPTR应用应用MOVC A,A+DPTRMOVC A,A+DPTR取分支地址取分支地址A0A0图图4-114-11分支地址表的使用分支地址表的使用43可整理ppt第 4 章 汇编语言程序设计简介 根据以上解题思路根据以上解题思路,程序编写如下程序编写如下:ORG 1000HMAIN:MOV DPTR,#BRANCHTAB ;取分支表入口地址;取分支表入口地址MOV A,R2 CLR C ;AR22 RLC AJNC NOADD ;没有进位转移;没有进

36、位转移INC DPH ;进位加到;进位加到DPH中中NOADD:MOV R3,A ;R3R22MOVC A,A+DPTR ;A分支地址的分支地址的高位字节高位字节XCH A,R3 ;R3分支地址的高位字节,分支地址的高位字节,AR22INC A ;指向下一个存储单元;指向下一个存储单元MOVC A,A+DPTR ;取分支地址的;取分支地址的低位字节低位字节MOVC A,A+DPTR;A(A+DPTR)44可整理ppt第 4 章 汇编语言程序设计简介 MOV DPL,A MOV DPH,R3CLR A JMP A+DPTR ;分支地址;分支地址PC,转移,转移;分支地址表;分支地址表BRANCH

37、TAB:DW PROG0 DW PROG1 ;分支程序;分支程序0 PROG0:;分支程序;分支程序0 PROG5:;分支程序;分支程序5JMP A+DPTR;PC(A)+(DPTR)45可整理ppt第 4 章 汇编语言程序设计简介(3)使用地址偏移量表。)使用地址偏移量表。所谓地址偏移量表,是指由各分支程序段的入口地址与所谓地址偏移量表,是指由各分支程序段的入口地址与地址偏移量表的标号差(即地址偏移量)形成的线性表。其地址偏移量表的标号差(即地址偏移量)形成的线性表。其中地址偏移量表中每项占一个字节,如图所示。中地址偏移量表中每项占一个字节,如图所示。;PROG0PROGn为分支程序入口地址

38、为分支程序入口地址TAB:DB PROG0-TAB DB PROG1-TAB DB PROGn-TAB图图4-12 地址偏移量表地址偏移量表46可整理ppt第 4 章 汇编语言程序设计简介 DPTRTABDPTRTABAR2AR2JMP A+DPTRJMP A+DPTR 分支程序分支程序PROG0PROG0 分支程序分支程序PROGnPROGn分支程序分支程序PROG1PROG1应用应用MOVC A,A+DPTRMOVC A,A+DPTR取分支地址偏移量取分支地址偏移量图图4-134-13地址偏移量表的使用地址偏移量表的使用47可整理ppt第 4 章 汇编语言程序设计简介 根据以上解题思路根据

39、以上解题思路,程序编写如下程序编写如下:ORG 0100HMOV DPTR,#TAB ;取偏移量表首地址;取偏移量表首地址MOV A,R2 MOVC A,A+DPTR ;将查表所得;将查表所得PROGi-TABAJMP A+DPTR ;由由A+DPTR=PROGi-TAB+TAB=;PROGi获得分支程序地址实现跳获得分支程序地址实现跳TAB:DB PROG0-TAB ;地址偏移量表;地址偏移量表DB PROG1-TAB DB PROGn-TABPROG0:PROGn:使用地址偏移量表实现多向分支时,应注意要使地址偏移量表与各分支程序使用地址偏移量表实现多向分支时,应注意要使地址偏移量表与各分

40、支程序的长度和在同一页(的长度和在同一页(256字节)范围内,因此该方法适用于分支较少的情况。字节)范围内,因此该方法适用于分支较少的情况。JMP A+DPTR;PC(A)+(DPTR)48可整理ppt第 4 章 汇编语言程序设计简介 4.2.3 循环程序设计循环程序设计 1、循环结构循环结构2、循环结构实例、循环结构实例 (1)单循环)单循环 (2)多重循环)多重循环49可整理ppt第 4 章 汇编语言程序设计简介 一、一、循环结构循环结构 图 4.4 50可整理ppt第 4 章 汇编语言程序设计简介 循环程序一般由四个主要部分组成循环程序一般由四个主要部分组成:(1)初始化部分初始化部分:

41、为循环程序做准备为循环程序做准备,如规定循环次数、如规定循环次数、给给各变量和地址指针预置初值。各变量和地址指针预置初值。(2)处理部分处理部分:为反复执行的程序段为反复执行的程序段,是循环程序的实体是循环程序的实体,也也是循环程序的主体。是循环程序的主体。(3)循环控制部分循环控制部分:这部分的作用是修改循环变量和控制变这部分的作用是修改循环变量和控制变量量,并判断循环是否结束并判断循环是否结束,直到符合结束条件时直到符合结束条件时,跳出循环为止。跳出循环为止。(4)结束部分结束部分:这部分主要是对循环程序的结果进行分析、这部分主要是对循环程序的结果进行分析、处理和存放。处理和存放。51可整

42、理ppt第 4 章 汇编语言程序设计简介 【例【例 8】工作单元清零。工作单元清零。在在应应用用系系统统程程序序设设计计时时,有有时时经经常常需需要要将将存存储储器器中中各各部部分分地地址址单单元元作作为为工工作作单单元元,存存放放程程序序执执行行的的中中间间值值或或执执行行结结果果,工作单元清零工作常常放在程序的初始化部分中。工作单元清零工作常常放在程序的初始化部分中。设设有有50个个工工作作单单元元,其其首首址址为为外外部部存存储储器器8000H单单元元,则则其工作单元清零程序如下其工作单元清零程序如下:二、二、循环结构实例循环结构实例(1)单循环单循环52可整理ppt第 4 章 汇编语言

43、程序设计简介 CLEAR:CLR A MOV DPTR,8000H ;工工作作单单元元首首址址送送指指针针 MOV R2,50;置循环次数置循环次数CLEAR1:MOVX DPTR,A INC DPTR ;修改指针修改指针 DJNZ R2,CLEAR1;控制循环控制循环 RET 53可整理ppt第 4 章 汇编语言程序设计简介 【例例 9】设设在在内内部部 RAM的的BLOCK单单元元开开始始处处有有长长度度为为 LEN个个的的无无符符号号数数据据块块,试试编编一一个个求求和和程程序序,并并将将和和存存入入内部内部 RAM的的 SUM单元(设和不超过单元(设和不超过 8 位)。位)。54可整理

44、ppt第 4 章 汇编语言程序设计简介 BLOCK EQU 20H LEN EQU 30H SUM EQU 40HSTART:CLR A ;清累加器清累加器A MOV R2,LEN;数据块长度送数据块长度送R2 MOV R1,BLOCK ;数据块首址送数据块首址送R1 LOOP:ADD A,R1;循环加法循环加法 INC R1;修改地址指针修改地址指针 DJNZ R2,LOOP ;修改计数器并判断修改计数器并判断 MOV SUM,A;存和存和 RET 55可整理ppt第 4 章 汇编语言程序设计简介【例【例10】求最小值。设内部】求最小值。设内部RAM中有一无符号数数据块,中有一无符号数数据块

45、其首地址为其首地址为BLOCK,长度存于,长度存于LEN单元,试求出数据块中单元,试求出数据块中的最小值,存入的最小值,存入MIN单元。单元。分析分析:求最小值时求最小值时,通常采用通常采用比较交换比较交换的方法。的方法。即首先取第一个数作为基准,然后将基准数与第二个数进即首先取第一个数作为基准,然后将基准数与第二个数进行比较,若基准数大于第二个数,则两数进行交换;若基行比较,若基准数大于第二个数,则两数进行交换;若基准数小于第二个数则不进行交换,总之保证基准数单元中准数小于第二个数则不进行交换,总之保证基准数单元中的值为最小值,再取下一个数与基准数进行比较,一直到的值为最小值,再取下一个数

46、与基准数进行比较,一直到所有数据比较完为止,则基准数单元中的数则为最小值。所有数据比较完为止,则基准数单元中的数则为最小值。依此类推,求最大值也可采用类似方法。依此类推,求最大值也可采用类似方法。56可整理ppt第 4 章 汇编语言程序设计简介 具体程序编写如下:具体程序编写如下:ORG 1000HMIN:DATA 20HLEN:DATA 21HBLOCK:DATA 22HMOV A,#0FFHMOV R2,LENMOV R1,#BLOCK;取数据块首地址;取数据块首地址LOOP:CLR C ;清;清CY准备做减法准备做减法 SUBB A,R1 JC NEXT ;A(R1),转),转NEXT

47、MOV A,R1 ;A(R1),则),则A(R1)SJMP NEXT1NEXT:ADD A,R1 ;A(R1),恢复恢复ANEXT1:INC R1DJNZ R2,LOOPMOV MIN,A ;存最小值;存最小值HERE:SJMP HERE 57可整理ppt第 4 章 汇编语言程序设计简介【例【例11】设片内】设片内RAM中有一无符号数数据块,其首地址为中有一无符号数数据块,其首地址为BLOCK,长度未知,但数据结束标志存于,长度未知,但数据结束标志存于LEN单元,求数单元,求数据块的最小值并存于据块的最小值并存于MIN单元中。单元中。可以看出,这是一个循环次数未知的例题,通过设定特征值可以看出

48、这是一个循环次数未知的例题,通过设定特征值控制循环结束条件。控制循环结束条件。58可整理ppt第 4 章 汇编语言程序设计简介 ORG 1000HMIN:DATA 20HLEN:DATA 21HBLOCK:DATA 22HMAIN:MOV R1,#BLOCK;数表首地址;数表首地址 MOV B,R1;取第一个数作为基准;取第一个数作为基准NEXT:INCR1;修改指针;修改指针 MOV A,R1 CJNE A,LEN,NEXT1 ;是否为数表结尾?;是否为数表结尾?SJMP DONE;循环结束;循环结束NEXT1:CJNE A,B,NEXT2 ;比较;比较NEXT2:JNCNEXT ;AB,

49、转,转NEXT继续取数继续取数 MOVB,A ;保存较小值;保存较小值 SJMP NEXTDONE:SJMP DONE59可整理ppt第 4 章 汇编语言程序设计简介 【例例12】在在内内部部 RAM中中从从50H单单元元开开始始的的连连续续单单元元依依次次存存放放了了一一串串字字符符,该该字字符符串串以以回回车车符符为为结结束束标标志志,要要求求测测试试该字符串的长度。该字符串的长度。程序如下程序如下:START:MOV R2,0FFH MOV R0,4FH ;数据指针数据指针R0置初值置初值 LOOP:INC R0 INC R2 CJNE R0,0DH,LOOP RET 60可整理ppt第

50、 4 章 汇编语言程序设计简介(2)多重循环多重循环 【例【例 13】10 秒延时程序。秒延时程序。延延时时程程序序与与 MCS-51 执执行行指指令令的的时时间间有有关关,如如果果使使用用 6 MHz晶晶振振,一一个个机机器器周周期期为为 2 s,计计算算出出一一条条指指令令以以至至一一个个循循环环所所需需要要的的执执行行时时间间,给给出出相相应应的的循循环环次次数数,便便能能达达到到延延时时的的目的。目的。10 秒延时程序如下秒延时程序如下:DELAY:MOV R5,100 DEL0:MOV R6,200 DEL1:MOV R7,248 DEL2:DJNZ R7,DEL2 DJNZ R6,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服