散转程序举例.docVIP

  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文档。上传文档
查看更多
(2)利用转向地址表进行散转 当转向范围比较大时,可直接使用转向地址表法,即把每个处理程序的入口地址直接放到地址表内。用查表指令从表中查找与变量值对应的处理程序的入口地址,再通过间接转移指令,使程序转向该地址指向的功能程序。 【例2-37】 根据标志单元R2中的内容,分别转向各个处理程序,这些处理程序零星分布在程序存储器中。 分析: 当多个功能程序被分散分布时,如通过标志数据执行这些程序,最好使用转向地址表法。首先把各服务程序的入口地址,按标志数据的升序对应排开,构成一个地址表。然后根据R2中的数据,从表中查找相应服务程序的入口地址。由于入口地址为16位,因此需要对R2寄存器进行乘2调整。而且把入口地址读入DPTR需分两次进行。 注意:利用间接转移指令进行散转时,累加器A应先清零。 源程序: ORG 1000H MOV DPTR,#TAB ;表首地址送DPTR MOV A,R2 ADD A,R2 ;(R2)*2的值送累加器A JNC MYJW INC DPH ;当(R2)*2的值大于255时,DPH加1 MYJW: MOV R4,A MOVC A,@A+DPTR ;取地址的高8位 XCH A,R4 ;地址高8位暂存在R4 INC A MOVC A,@A+DPTR ;取地址的低8位 MOV DPL,A MOV DPH,R4 CLR A ;偏移量清零 JMP @A+DPTR TAB: DW PRG0 DW PRG1 … … DW PRGn 这种多分支程序要验证有点麻烦,需要把各个功能程序都列出来才行。伟福仿真验证程序:散转_地址表.ASM,看到R2的值是几就会转移到第几个功能程序就行了。 (3)利用“RET”指令进行散转 此方法与转向地址表法基本相同。两者的惟一区别是,转向地址表法,将表中取出的功能程序的入口地址直接送给数据指针;而返回指令法,则把入口地址压入堆栈进行保存,并随后执行一条RET指令,使程序转向功能程序。 【例2-38】根据标志单元R2R3中的内容,分别转向各个处理程序。 分析: 先建立一个各服务程序的入口地址表。由于入口地址为16位,因此需要对R2R3内容进行乘2调整。但查表后,将读出的入口地址不送数据指针,而是压入堆栈保护区中。然后执行一条RET指令。RET指令将从堆栈中弹出刚刚压栈的处理程序的入口地址送给PC,因此程序将转向由R2R3内容所指定的处理程序。 源程序: ORG 1000H MOV DPTR,#TAB ;表首地址送DPTR MOV A,R3 ;(R2R3)*2 CLR C RLC A XCH A,R2 RLC A ADD A,DPH ; (R2R3)*2的高位加到DPH MOV DPH,A MOV A,R2 MOVC A,@A+DPTR ;取地址的高8位 XCH A,R2 INC DPTR MOVC A,@A+DPTR ;取地址的低8位 PUSH ACC ;地址的低8位入栈 MOV A,R2 PUSH ACC ;地址的高8位入栈 RET ;执行返回指令,将程序入口送PC,实现散转 TAB: DW PRG0 DW PRG1 … … DW PRGn 伟福仿真验证程序:散转_RET.ASM,看到R2R3的值是几就会转移到第几个功能程序就行了。

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档