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

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

ID:13521197

大小:25.00 KB

页数:5页

时间:2018-07-23

基于仿真技术的mcs―51单片机相对寻址问题的探讨_第1页
基于仿真技术的mcs―51单片机相对寻址问题的探讨_第2页
基于仿真技术的mcs―51单片机相对寻址问题的探讨_第3页
基于仿真技术的mcs―51单片机相对寻址问题的探讨_第4页
基于仿真技术的mcs―51单片机相对寻址问题的探讨_第5页
资源描述:

《基于仿真技术的mcs―51单片机相对寻址问题的探讨》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于仿真技术的MCS―51单片机相对寻址问题的探讨  摘要:文章利用仿真软件对MCS-51单片机指令中的相对寻址方式中偏移量的形成做了分析,就汇编指令中相对寻址指令中的‘rel’的本质通过Protues和伟福软件仿真进行了探求。经过仿真软件验证,指出相对寻址指令中的‘rel’在汇编指令中为目的地址,和机器代码中的实际偏移量并非为同一数值。  关键词:MCS-51单片机;相对寻址;偏移量;汇编语言;机器码  【中图分类号】G640  1前言  MCS-51系列单片机作为经典的单片机应用十分广泛,其指令总共有111条。其指令中对操作数的寻址方式有7种,分别为立即数寻址、直接寻址

2、、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址[1-4,5~8]。在学习相对寻址的内容和有关相对寻址的指令时,许多初学者会对于偏移量的值和跳转目的地址的值混淆不清,产生疑惑和不解。许多教材对此问题的解释也不一致,甚至有错误,这加深了初学者的困惑和理解错误。仿真技术在电子电路设计中得到了广泛的应用,利用Protues、伟福软件等可以很直观的展示程序的执行过程。为了揭示相对寻址的本质,本文将利用Protues仿真软件和伟福软件的仿真功能对相对寻址进行剖析。  2相对寻址执行过程的探讨  相对寻址方式是为了程序的相对转移而设计的,其过程是以当前PC的内容为基址,加偏移量

3、作为转移地址,从而实现程序的转移。转移的目的地址取决于表达式:目的地址=转移指令地址+转移指令字节数+偏移量。需要注意的是,偏移量是有正负号之分的,偏移量的取值范围是当前PC值的-128~+127之间。该表达式应这样理解:在执行转移指令语句时,PC的内容是转移指令的下一条指令的地址值,该地址值加上要偏移的地址字节数形成新目的地址,然后程序跳转到新的目的地址,其中要偏移的地址字节数为8位有符号数二进制数,即偏移量在-128~+127之内。那么这个偏移量是如何得到的呢?在许多教材和文章中均以rel作为相对寻址的标志,这些教材和文章对相对寻址的解释都很相似,其解释为:以程序计数器

4、PC的当前值为基址,加上汇编指令中给出的相对偏移量rel,形成新的PC值,即跳转目的地址,相对偏移量rel为一字节补码数,其表示范围为-128~+127[1-8]。举例来说明此问题,如下面的汇编语言程序语句:  ORG0200H  MOVA,#36;双字节指令  JNZ30H;双字节指令  按这些教材和文章中的解释,执行指令JNZ08H时PC值变为0202H+2,30H就是相对偏移量,该指令执行后程序应该跳转到目的地址=0202H(转移指令地址)+2(转移指令JZ的字节数)+30H(偏移量)=0232H上。事实上这种解释是错误的,该跳转指令执行后程序不会跳转到计算出的目的地

5、址上去。笔者认为应该是:进行相对寻址时,确实是以PC的当前值作为基址,加上相对偏移量形成新的目的地址,但是在汇编指令中并不能直接看出相对偏移量,这个偏移量体现在机器码中;而汇编指令中的rel,不管是数值形式还是符号形式只能是目的地址值,且其距离在当前PC值-128~+127的范围内。  3相对寻址执行过程的Protues仿真验证  为了看清楚相对转移指令的偏移量值的本质,以一段程序在Protues仿真软件下来观察其跳转过程,验证程序及其各指令占用地址如下:  ORG0000H  0000HMOVA,#1  0002HJNZ08H  0004HSJMP$  ORG0008H 

6、 0008HINCA  0009HMOVB,#2  000CHSUBBA,B  000EHSJMP$  END  将程序加载到Protues仿真软件中放的80C51单片机中,经编译后执行调试,调出程序代码窗口,按F11键单步调试操作来观察程序的跳转情况。程序首句给A赋值为1,如果按照rel为偏移量的解释,那么执行指令JNZA,08H时,当前PC值为0004H,加上偏移量08H,那么目的地址就应该000CH,单步操作是程序将跳转到SUBBA,B指令上。Protues仿真结果如图1所示。  从图中可以看出,在执行了相对转移指令后,程序并没有跳转到地址000CH上,而是跳到了地址

7、0008H。说明了执行有关相对寻址指令时,指令中的rel并不是真正的偏移量,而是程序跳转的目的地址,当然该rel完全可以用标号来代替,因为标号可以代替绝对地址。  比如,将上例中的0008H用标号AA来代替,那么仿真结果如图2所示。  从上面仿真过程可以看出,执行相对转移指令时,教材中所说指令中的rel并非是偏移量,那么这个偏移量在哪儿呢?  4相对转移指令的机器码  因为Protues软件下无法查看程序的机器代码,为了能够观察到前面程序的机器代码,对前面程序段在伟福软件下进行编译,来对其机器代码进行观察,其机器代

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。