[help]关于程序MOVC A,@A+PC

[复制链接]
3970|6
 楼主| liang99740 发表于 2008-4-2 16:50 | 显示全部楼层 |阅读模式
<br /><br />程序MOVC&nbsp;A,@A+PC&nbsp;<br />1、怎么计算这个偏移量A的值?是不是跟接下来的指令的周期数有关?&nbsp;<br />2、这个指令可以用来查ASCII表吗,怎么查表?<br /><br />例如:&nbsp;<br />……&nbsp;<br />……&nbsp;<br />ADD&nbsp;A,#07H&nbsp;;地址调整&nbsp;<br />MOVC&nbsp;A,@A+PC&nbsp;;查表得相应的ASCII码&nbsp;<br />……&nbsp;<br />……&nbsp;<font color=#FF00C0>;后面的指令周期刚是6个</font>&nbsp;<br />END&nbsp;<br /><br /><font color=#0000FF>本人比较愚笨,希望大家能给个详细的解答,拜谢咯</font>&nbsp;
wsl_5631 发表于 2008-4-3 08:38 | 显示全部楼层

答案是不用MOVC A,@A+PC 用MOVC A,@A+DPTR

算来算去多麻烦。
computer00 发表于 2008-4-3 09:58 | 显示全部楼层

相对跳转有相对跳转的好处,可以生成与地址无关的代码

后面的偏移量不是指令周期数,而是字节数。注意当前PC值。
HWM 发表于 2008-4-3 10:11 | 显示全部楼层

自己查一下MOVC A,@A+PC是几字节的指令,

此处PC就是本指令地址加指令长度(即指向下一条指令,若存在的话)<br /><br />一般下面加一转移指令,后接一个常数表。这样使用有两个好处,1)是不麻烦DPTR,2)可相对定位。<br /><br />
 楼主| liang99740 发表于 2008-4-3 10:33 | 显示全部楼层

怎么查ASCII表?

还有疑问,怎么查询ASCII表,是不是也要像其他的表格一样,附在程序的后面。用DB的形式列出来?
HWM 发表于 2008-4-3 10:41 | 显示全部楼层

任何表都一样,就是在“转折点”下加DB。

至于转折点可用<br /><br />ret<br />sjmp<br />ajmp<br />ljmp<br /><br />等等。<br /><br />关键是要算准偏移量。<br />
ayb_ice 发表于 2008-4-3 15:20 | 显示全部楼层

推荐使用用MOVC A,@A+DPTR

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部