第4章:汇编语言序设计2.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章:汇编语言序设计2

4.2 顺序程序设计 4.2.1 顺序程序设计方法 4.2.2 顺序程序设计实例 4.2.1 顺序程序设计方法 顺序结构程序是最简单、最基本的程序。要设计出高质量的程序需要掌握一定的技巧,需要熟悉指令系统,正确地选择指令,掌握程序设计的基本方法和技巧,以达到提高程序执行效率、减少程序长度、最大限度地优化程序的目的。 顺序程序的特点和设计方法。 结构比较单一和简单,按程序编写的顺序依次执行,中间没有任何分支,程序流向不变。 数据传送指令使用得较多,没有控制转移类指令。 作为复杂程序的某个组成部分,如循环结构程序中需多次重复执行的某段程序(称为循环处理)。 【例4-5】4字节(双字)无符号数加法:将内部RAM 20H开始的4个单元中存放的4字节十六进制数(20H高位,23H低位)和内部RAM 30H单元开始的4个单元中存放的4字节十六进制数相加,结果存放到40H开始的单元中。 首先,根据题意可以画出加法过程的示意图。 其次,由加法规则可知:23H单元与33H单元相加用指令“ADD”外,其余单元都用“ADDC”。程序如下: 说明: (1)若是BCD码加法,在上述的“ADD”或“ADDC”指令后紧跟“DA A”即可。 (2)上述程序中最后的“SJMP $”必须要加,这条指令是让程序停止往下执行,相当于“原地踏步”,因为“END”并非程序停止的命令。 【例4-6】数据合并程序:设在20H和21H单元中各有一个8位数据 (20H)=x7x6x5x4x3x2x1x0 (2lH)=y7y6y5y4y3y2y1y0 现在要从20H单元中取出低4位,从21H单元中取出低4位完成拼装并送22H单元保存,数据要求如下: (22H)= y3y2y1y0x3x2x1x0 数据的拆、拼常常利用逻辑指令ANL、ORL来完成,“拆”是利用ANL的屏蔽功能“与0得0,与1不变”的性质来实现,“拼”是利用“或0不变”的性质来实现,高、低位的交换用SWAP 指令 程序清单如下 ORG 0000H SJMP START ORG 0050H START:MOV A,20H ;将x7~x0传送到A ANL A,B ;将高4位屏蔽掉, ;得到0000x3x2x1x0 MOV 22H,A ;将0000x3x2x1x0暂存到22H MOV A,21H ;将y7y6y5y4y3y2y1y0传送到A SWAP A ;将高、低4位互换, ;变成y3y2y1y0y7y6y5y4y ANL A,B ;将低4位屏蔽掉, ;得到y3y2y1y00000 ORL A,22H ;0000x3x2x1x0 和 ;y3y2y1y00000相或 MOV 22H,A ;将结果保存到 22H SJMP $ END 上面两个程序中的开头用了ORG程序定位指令,尽管在这样简单的程序中省掉也没什么影响,但对于养成规范的编程习惯是有好处的,否则看到一个具体应用程序时就会无所适从,同时也与第2.2节(P28)关于程序存储器的叙述相吻合。 【例4-7】双字节数依次左移程序:将20H(高位)、21H(低位)组成的双字节数向左移一次。 根据题意可表示成图4-3,先用RLC指令将21H单元左移(实际必须将21H单元送到A 后才能用RLC指令)一次,此时21H单元的最高位进入Cy,最低位暂时由原来的Cy填入(最后必须用20H单元的最高位来补);然后再用RLC指令将20H单元左移,此时Cy(原来21H的最高位)进入了21H的最低位,21H的最高位则进入Cy,用此Cy“补”到20H单元最低位即可完成双字节数的移位。 程序如下: ORG 0000H SJMP START ORG 0050H START: MOV 20H,#11H MOV 21H,#22H MOV A,21H ;21H传送到A RLC A ;21H带Cy左移 MOV 21H,A ;送还数据到21H MOV A,20H ;20H传送到A RLC A ;20H带Cy左移 MOV 20H,A ;送还数据到20H MOV 08H,C ;注意,这里的08H是21H单 ;元的D0位地址 SJMP $ END 4.2.2 顺序程序设计实例 【例1】 有两个6位BCD码分别存放在片内RAM 30H、31H、32H单元和40H、41H、42H单元内,求它们的和并将和存放到片内RAM 50H、51H、52H单元中。 解:设定片内R

文档评论(0)

shaofang00 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档