第4章MCS-51单片机汇编程序设计.pptVIP

  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文档。上传文档
查看更多
4.6.2 散转程序设计 MOV A , R2 RL A ;分支信息乘2 MOV DPTR , #TAB ; DPTR指向转移指令表首址 JMP @A+DPTR ;转向形成的散转地址 TAB:AJMP OPR0 ;转移指令表 AJMP OPR1 …… AJMP OPR127 转移指令表中的转移指令是由AJMP指令构成,如果分支数大于128个,如分支数有256个 。 4.6.2 散转程序设计 ORG 0200H MOV DPTR , #TAB ; DPTR指向转移指令表首址 MOV A , R2 ;分支信息放累加器A中 RL A ;分支信息乘2 JNC NEXT INC DPH ;高字节调整到DPH中 NEXT:JMP @A+DPTR ;转向形成的散转地址 TAB: AJMP OPR0 ;转移指令表 AJMP OPR1 AJMP OPR2 …… AJMP OPR255 AJMP指令的转移范围不超出所在的2KB区间,如各段小程序较长,在2KB范围内无法全部容纳,应改用LJMP指令。每条LJMP指令占用3个字节,如改用LJMP指令,程序需作如下改动: 4.6.2 散转程序设计 ORG 0200H MOV DPTR , #TAB ; DPTR指向转移指令表首址 MOV A , R2 ;分支信息放累加器A中 MOV B , #3 MUL A B ;分支信息乘3 XCH A , B ADD A , DPH ;高字节调整到DPH中 MOV DPH , A XCH A , B JMP @A+DPTR ;转向形成的散转地址 TAB: LJMP OPR0 ;转移指令表 LJMP OPR1 LJMP OPR2 …… LJMP OPR127 因为LJMP是3字节指令,所以分支号要乘以3。利用乘法指令将乘积的高、低字节分别加到DPH和DPL中。这个程序可不受散转128分支的限制,但要保证相乘、相加都不溢出。 4.6.2 散转程序设计 (2)使用地址偏移量表的散转程序 前面介绍的转移表,每项至少为两个字节(AJMP表),有的为三个字节(LJMP表)。如果转向的程序均在256B范围内,可以使用地址偏移量来实现散转。 【例4-13】按R2的内容转向6个处理程序。 程序如下: 4.6.2 散转程序设计 ORG 1000H MOV A , R2 MOV DPTR , #TAB MOVC A , @A+DPTR JMP @A+DPTR RET TAB: DB OPR0-TAB DB OPR1-TAB …… DB OPR5-TAB OPR0: 处理程序0 OPR1: 处理程序1 OPR2: 处理程序2 OPR3: 处理程序3 OPR4: 处理程序4 OPR5: 处理程序5 4.6.2 散转程序设计 该方法利用“JMP @A+DPTR”与伪指令DB汇编时的计算功能实现散转。使用这种方法必须是转移表的大小加上各个程序长度必须小于256B。转移表和各处理程序可以位于程序存储存储器空间的任何地方,并且不依赖于256B程序存储范围。这种方法的优点是程序简单,而且转移表短。 (3)使用地址表的散转程序 使用地址偏移量转向受到转向范围的限制,在转向范围较大时,可以直接使用转向地址表,把转移目标地址组织成一个地址表,各项表目为各个转向程序的入口。散转时使用查表指令,按某个单元的内容查表找到对应的转向地址,把它装入DPTR中,然后对累加器A清零,再用“JMP @A+DPTR”直接转向个处理程序。 【例4-14】根据寄存器R2的内容,转向各个处理程序。 设转向入口为OPR0~OPRn,散转程序和转移表如下: 4.6.2 散转程序设计

文档评论(0)

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

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

1亿VIP精品文档

相关文档