基于仿真技术的MCS―51单片机相对寻址问题的探讨.docVIP

基于仿真技术的MCS―51单片机相对寻址问题的探讨.doc

  1. 1、本文档共5页,可阅读全部内容。
  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文档。上传文档
查看更多
基于仿真技术的MCS―51单片机相对寻址问题的探讨.doc

基于仿真技术的MCS―51单片机相对寻址问题的探讨   摘 要:文章利用仿真软件对MCS-51单片机指令中的相对寻址方式中偏移量的形成做了分析,就汇编指令中相对寻址指令中的‘rel’的本质通过Protues和伟福软件仿真进行了探求。经过仿真软件验证,指出相对寻址指令中的‘rel’在汇编指令中为目的地址,和机器代码中的实际偏移量并非为同一数值。   关键词:MCS-51单片机;相对寻址;偏移量;汇编语言;机器码   【中图分类号】G640   1 前言   MCS-51系列单片机作为经典的单片机应用十分广泛,其指令总共有111条。其指令中对操作数的寻址方式有7种,分别为立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址[1-4,5~8]。在学习相对寻址的内容和有关相对寻址的指令时,许多初学者会对于偏移量的值和跳转目的地址的值混淆不清,产生疑惑和不解。许多教材对此问题的解释也不一致,甚至有错误,这加深了初学者的困惑和理解错误。仿真技术在电子电路设计中得到了广泛的应用,利用Protues、伟福软件等可以很直观的展示程序的执行过程。为了揭示相对寻址的本质,本文将利用Protues仿真软件和伟福软件的仿真功能对相对寻址进行剖析。   2 相对寻址执行过程的探讨   相对寻址方式是为了程序的相对转移而设计的,其过程是以当前PC的内容为基址,加偏移量作为转移地址,从而实现程序的转移。转移的目的地址取决于表达式:目的地址=转移指令地址+转移指令字节数+偏移量。需要注意的是,偏移量是有正负号之分的,偏移量的取值范围是当前PC值的-128~+127之间。该表达式应这样理解:在执行转移指令语句时,PC的内容是转移指令的下一条指令的地址值,该地址值加上要偏移的地址字节数形成新目的地址,然后程序跳转到新的目的地址,其中要偏移的地址字节数为8位有符号数二进制数,即偏移量在-128~+127之内。那么这个偏移量是如何得到的呢?在许多教材和文章中均以rel作为相对寻址的标志,这些教材和文章对相对寻址的解释都很相似,其解释为:以程序计数器PC的当前值为基址,加上汇编指令中给出的相对偏移量rel,形成新的PC值,即跳转目的地址,相对偏移量rel为一字节补码数,其表示范围为-128~+127[1-8]。举例来说明此问题,如下面的汇编语言程序语句:   ORG 0200H   MOV A,#36 ;双字节指令   JNZ 30H ;双字节指令   按这些教材和文章中的解释,执行指令JNZ 08H时PC值变为0202H+2,30H就是相对偏移量,该指令执行后程序应该跳转到目的地址=0202H(转移指令地址)+2(转移指令JZ的字节数)+30H(偏移量)=0232H上。事实上这种解释是错误的,该跳转指令执行后程序不会跳转到计算出的目的地址上去。笔者认为应该是:进行相对寻址时,确实是以PC的当前值作为基址,加上相对偏移量形成新的目的地址,但是在汇编指令中并不能直接看出相对偏移量,这个偏移量体现在机器码中;而汇编指令中的rel,不管是数值形式还是符号形式只能是目的地址值,且其距离在当前PC值-128~+127的范围内。   3相对寻址执行过程的Protues仿真验证   为了看清楚相对转移指令的偏移量值的本质,以一段程序在Protues仿真软件下来观察其跳转过程,验证程序及其各指令占用地址如下:   ORG 0000H   0000H MOV A,#1   0002H JNZ 08H   0004H SJMP $   ORG 0008H   0008H INC A   0009H MOV B,#2   000CH SUBB A,B   000EH SJMP $   END   将程序加载到Protues仿真软件中放的80C51单片机中,经编译后执行调试,调出程序代码窗口,按F11键单步调试操作来观察程序的跳转情况。程序首句给A赋值为1,如果按照rel为偏移量的解释,那么执行指令JNZ A,08H时,当前PC值为0004H,加上偏移量08H,那么目的地址就应该000CH,单步操作是程序将跳转到SUBB A,B指令上。Protues仿真结果如图1所示。   从图中可以看出,在执行了相对转移指令后,程序并没有跳转到地址000CH上,而是跳到了地址0008H。说明了执行有关相对寻址指令时,指令中的rel并不是真正的偏移量,而是程序跳转的目的地址,当然该rel完全可以用标号来代替,因为标号可以代替绝对地址。   比如,将上例中的0008H用标号AA来代替,那么仿真结果如图2所示。   从上面仿真过程可以看出,执行相对转移指令时,教材中所说指令中的rel并非是偏移量,那么这个偏移量在哪儿呢?   4 相对

文档评论(0)

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

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

1亿VIP精品文档

相关文档