微型计算机原理及应用(第三版)第6章.pptVIP

微型计算机原理及应用(第三版)第6章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微型计算机原理及应用(第三版)第6章

6. 微型计算机的程序设计 6.1 程序设计步骤 6.2 简单程序 6.3 分支程序 6.4 循环程序 6.5 子程序 6.6 查表程序 6.1 程序设计步骤 汇编语言程序设计的步骤: 1.分析问题,全面理解问题。 2.建立数学模型:把问题数学化、公式化。 3.确定算法:优选逻辑简单、运算速度快、精度高的算法。 4.绘制程序流程图:图 6-1。 5.内存空间分配:工作单元尽可能设在CPU寄存器中。 6.编制程序和静态检查 7.程序调试实验 6.2 简单程序 程序执行方式为“从头到尾”逐条执行指令语句,直到程序结束。 6.2 简单程序 6.2 简单程序 6.3 分支程序 6.3 分支程序 6.3 分支程序 6.3 分支程序 例:比较AL、BL、CL中带符号数的大小,将最小数放在AL中。 CMP AL,BL ;AL和BL比较 JNG BBB ;若AL≤BL,则转BBB XCHG AL,BL ;若AL>BL,则交换 BBB: CMP AL,CL ;AL和CL比较 JNG CCC ;若AL≤CL,则转CCC XCHG AL,CL ;若AL>CL,则交换 CCC: HLT 6.4 循环程序 6.4 循环程序 循环程序 单循环: 多重循环:两重以上的循环。 循环控制 计数控制:事先设定循环次数,达到次数停止循环。 条件控制:根据是否满足一定的条件来控制循环。 状态控制:事先设定二进制位的状态,或者设置测试开 关的状态,根据状态来控制循环。 6.4 循环程序 1.DO…UNTIL 条件 结构 先执行,再判断条件。工作部分至少执行一次。 2. DO WHILE条件 结构 先判断条件,再执行。工作部分有可能一次都不执行。 例6.5:求两个多字节数之和,这两个数在10050H地址开始的内存单元中连续存放,低位在小地址一端,运算结果放在这两个数之后。设这两个多字节数均为8个字节长。 3. 编制的程序如下: 1. 子程序调用与返回 调用子程序用CALL指令,返回调用程序用RET指令。 子程序调用实际是程序的转移,但是和转移指令有所不同。子程序调用指令CALL执行时要保护返回地址,而转移指令不考虑返回问题。每个子程序都有RET指令负责把压入栈区的返回地址弹出送到IP或者CS:IP(段间返回),实现子程序返回。 2. 注意的问题: 子程序保护与恢复。进入子程序后首先要保护主程序的运行状态(标志位)和使用的寄存器内容(称为保护现场),退出子程序前要恢复现场。一般在调用子程序后由子程序前部操作完成现场保护,再由子程序后部完成现场恢复。现场信息可以压入堆栈,或者传入不被占用的存储单元。 参数传递。调用前要预先确定子程序中要使用哪些寄存器,并定义入口参数和出口参数。参数传递可利用寄存器、存储单元或堆栈。 子程序说明。每个子程序应该有必要的使用注释。 例6.8:找出一个数据块中的最大数。其中,数据块的长度1,并且放在内存(2001H)单元中,而数据块本身是从(2002H)单元开始存放的,最后,把找出的最大数放到(2000H)单元中。假设这段数据块中的数都是无符号的8位数。 4. 编制的程序如下(未作为子程序时): 5. 把程序改为子程序形式: * * 例6.1: 用数学运算命令,对两个16位数做加法运算: 3281H + 2797H 。这两个数从地址10050H开始连续存放,低位在小地址一端,结果放在这两个数之后。 1. 分析题目:可用16位寄存器进行运算,一次完成。计算之前要清除CF,对累加器AX清零。相加后,结果会影响标志寄存器的进位位CF。 10050H 81H 32H 97H 27H 和低8位 和高8位 3. 程序流程图: 开始 被加数+加数 - AX AX- (10054)和(10055)单元 暂停 初始化: 段地址DS:1000H 被加数指针SI - 50H 加数指针DI - 52H 和的指针BX - 54H 清除AX和CF 被加数- AX 4. 内存空间分配: 内存地址 内容 10050H 被加数低8位 81H 10051H 被加数高8位 32H 10052H 加数低8位 97H 10053H 加数高8位 27H 10054H 和的低8位 10055H 和的高8位 3281H + 2797H 5. 编制的程序如下: MO

文档评论(0)

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

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

1亿VIP精品文档

相关文档