第15-16讲.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第15讲 4.1.3编写汇编语言源程序的方法与技巧 编写汇编语言源程序就是用计算机能接受的语言把解决问题的步骤描述出来。使用汇编语言编程,能最充分地发挥指令系统的功能与效率,获取最简练的目标程序,满足实时性要求。汇编语言源程序设计的一般步骤如下。 分析任务 要明确题目的任务,弄清所给定的原始数据、任务要解决的具体问题和应得到的结果。 明确运算速度和精度的要求。 对实际问题进行抽象化处理,提炼成数学模型。 确定算法 确定算法就是采用何种计算公式或计算方法。不同的算法在占用存储空间、计算精度、编程工作量等方面是有差别的,需要进行比较和选择,算法是进行程序设计的依据,决定了程序的正确性和程序的质量。 数据类型和数据结构规划 数据类型:数据类型可分为逻辑型和数值型,数值型又可分为定点数和浮点数。 定点数:小数点的位置固定不变。通常采用整数定点表示,即在运算之前,选择适当的比例因子,使所有参与运算的数都扩大若干倍,化成纯整数,而计算结果再用相应的比例缩小若干倍使其恢复为真实值。还应对计算结果加以估计,以防计算机产生溢出(当然也可以采用纯小数表示,即将所有参与运算的数都化为小于1的纯小数)。总之,小数点在计算机中实际上是不表示出来的,需要编程人员事先约定它的位置。 定点数的格式为:最高位表示符号,余下的位表示尾数(数值部分)。字长由数值的精度要求确定,如双字节、三字节、四字节等。 定点数适合表达数值变化范围有限的数据。编程较简单。 浮点数:当数值变化范围太宽时,只好采用浮点数。任何一个二进制数N可以表示为: 式中S—数N的尾数(N的有效数值)。用Sf表示尾数的符号。P—数N的阶码,表示小数点的位置,用Pf表示阶码的符号位。则浮点数可表示为: 阶符 阶码 数符 尾数 例如:二进制数N=2+11*1011的浮点数表示为 0 1 1 0 1 0 1 1 阶符 阶码 数符 尾数 若位数相同,浮点数的表示范围比定点数大的多。运算规则和编程比定点数复杂。 在89C51中常用的三字节浮点数格式为 D7 D6 D5 D0 数符 阶符 阶码 第一字节 阶码用补码形式给出 尾 数 高 位 第二字节 尾 数 低 位 第三字节 数据结构:即数据存放的格式,单片机中大多采用数据结构较简单的线性结构,以利于数据处理。 由于受RAM空间的限制,队列结构广泛采用环形队列结构,应规划好队列区域和队首指针,并计算出所需的RAM字节数。 对于数组,一般采用顺序存放的格式,以便采用简单的下标运算来访问数组中的任何一个元素。 资源分配:使用汇编语言编程时,编程人员直接面对计算机的最底层资源,在编程之前,必须对ROM、RAM、定时/计数器、中断源等资源进行分配,特别是内部RAM中的工作寄存器R0~R7、位寻址区、堆栈、数据缓冲区等进行分配,确定各种数据存放的地址。 堆栈:复位后SP=07H,堆栈将使用1区工作寄存器并向2区3区甚至位寻址区延伸。故应修改栈指针,使堆栈避开这些资源,通常使用MOV SP,#5FH指令,使堆栈使用60H~7FH。 工作寄存器:复位后当前工作寄存器为0区,故一般主程序使用0区,子程序使用1区,中断服务程序使用2区,3区留作子程序嵌套、中断嵌套时使用。 在子程序或中断服务程序中保护现场时,将PSW进栈,用位操作或字节操作指令修改RS1、RS0位的状态,即可实现当前工作寄存器变区,子程序或中断服务程序返回前恢复现场时,将PSW出栈,当前工作寄存器即可恢复为原来的区。 位寻址区:用来存放各种软件标志、逻辑变量、位输入信息、位输出信息的副本、状态变量、逻辑运算的中间结果等。这些项目安排之后,还应保留两个字节备用,其余单元才可改作其他用途。 通用RAM区:RAM地址30H~7FH只能存入整字节数据。通常用来存放各种参数、指针、中间结果或用作数据缓冲区。堆栈通常安排在这一区域的高端,如60H~7FH。 如果系统的各种开销安排好后,RAM还应有足够的余量,因为现在还处在规划阶段,随着软件设计的展开,几乎都会有新的资源需求,如果在规划阶段资源已经很紧张,应考虑修改硬件设计或选用52子系列的单片机,增加RAM资源。 RAM资源规划好后,应列出一张RAM资源的详细分配表,作为编程的依据。分配表至少应反映:单元地址、用途、数据类型、数据结构和备注等信息。 程序结构设计:程序结构的设计是把算法转化为程序的准备阶段,一般采用流程图法,流程图是用规定的图形符号配合文字说明来表示算法或处理问题的步骤,具有直观、易懂的特点,是程序结构设计的有力工具。 程序的基本结构有顺序结构、分支结构和循环结构。选择合适的程序结构,把整个任务细化为若干个小的功能,使每个小功能只对应几条语句。 编写源程序:在绘制的流程图和资源分配的基础

文档评论(0)

82393aa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档