找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1246|回复: 0
打印 上一主题 下一主题
收起左侧

汇编之51单片机芯片中设计的伤神的机器指令

[复制链接]
跳转到指定楼层
楼主
ID:266429 发表于 2019-3-21 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个就是程序存储器中的表数据的传输。
现有的设计,它是先要将PCDPTR作为基地址,再与一个相对地址值相加,得到的值即为程序存储中的绝对地址值。然后程序找到这个地址,将其中的内容送入目的地。这个相对地址,目前的设计中,是必须存在A中;得到的绝对地址值,不知存在哪(不管它了);数据传输目的地,必须是A。也就是说,你必须先将一个数据送入A中,哪怕这个数是0
汇编命令:MOVC  A@A+PC
          MOVC  A@A+DPTR
为什么非要用到A作相对地址值的存放地?你用了A就算了,为什么又用最终数据将A中的相对地址值冲掉?你就不能用B存放相对地址值?
为什么非要用与A中值相加的方式来获得绝对地址值?你就不能设计成直接以PC中或DPTR中的值为绝对地址值?基地址与相对地址值的相加工作,程序猿又不是笨蛋。而且,取表数据顺序取的时候是绝大多数,PC自己会加1DPTR弄个自加1程序也很简单滴嘛。
再说了,你就不能设计个程序存储器绝对地址寻址机器指令啊?目的地址直接对BRn不行么?直接对A也行啊?这个没什么难度吧?
我们当然知道,受总指令数限制嘛,256个全部都用完了。但是,这个取表数据可经常是工作量很大的工作,所以,对所有指令进行优化取消某些指令给它让个位,很有必要吧?
再说了,PSW中不是还有个D1空位么,用它来转换一下使用哪几条指令不行么?这个,不会影响兼容性的。
以现有的制造技术,这些应该都很容易做到吧?
也许,当初做51机芯片设计时,基于当时的需要及条件而这样设计,或者,设计者智商......
说得不一定对,盼指教。反正,以上所说,对于程序存储器中表数据寻址与传输命令的理解,有一定帮助。

评分

参与人数 1黑币 +90 收起 理由
admin + 90 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表