找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机查表指令的问题

[复制链接]
跳转到指定楼层
楼主
ID:450037 发表于 2019-1-18 22:23 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
关于查表指令的问题
第一:为什么开始汇编程序给累加器是14的偏移量
第二:当进入Roop子程序时,入栈累加器A,那么A是不是要加一,那么偏移量是不是就变成了15
第三:在比较指令不想等时,累加器加一和地址指针分别加一是什么意思,为什么要两个都加一

Screenshot_20190117-203424.jpg (296.06 KB, 下载次数: 23)

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

使用道具 举报

沙发
ID:7485 发表于 2019-1-19 08:49 | 只看该作者
从本条指令起,到TAB4表中间的各条指令的机器码一共有14个,所以是14
回复

使用道具 举报

板凳
ID:7485 发表于 2019-1-19 08:55 | 只看该作者
本帖最后由 ahshmj 于 2019-1-19 14:08 编辑

上次在你的另外的一个帖子里已经告诉你了:“
MOVC  A,  @A+PC 本条指令是查表指令,也叫作:“程序存储器读指令”,要读的值在“TAB3”表中。“PC”是当前(本条指令)代码在程序存储器中的位置,而TAB3表距离当前“PC”还有6个字节的距离,所以当前的“PC”值+6,才是TAB3的首字符位置。”


你看看从“MOVC  A,  @A+PC”这语句到“TAB3”之间有几条指令(不含本语句)?这几条指令的机器码就是6个字节。

在没有给“TAB3”指定位置的情况下,程序的机器码是按先后顺序存放烧写的。

“PC”的值就是当前语句的机器码烧写在程序存储器中的地址。再加上6个字节,就到“TAB3”的首地址了。

你可以打开你的本工程目录下,经过编译产生的*.lst文件看看便知。

根据你的提问,你现在理解这些还有一定的难度,如果你真心的想学、想掌握这门技术,建议你还是扎扎实实的打好基础。

有好几个网友的回帖都讲的非常详细了,就是基础再差也该看懂了。
这么详细还是看不懂?
回复

使用道具 举报

地板
ID:7485 发表于 2019-1-19 09:00 | 只看该作者
在看不懂你就别用这个指令了。用:

MOV   DPTR,  #TAB4
MOVC    A,   @A+DPTR

这个可以不用考虑偏移量。
回复

使用道具 举报

5#
ID:450037 发表于 2019-1-19 17:18 来自手机 | 只看该作者
ahshmj 发表于 2019-1-19 08:49
从本条指令起,到TAB4表中间的各条指令的机器码一共有14个,所以是14

一个字节是一个机器码吗?我数的是12个机器码,中间是不是有哪个是两个机器码的啊
回复

使用道具 举报

6#
ID:7485 发表于 2019-1-20 08:01 | 只看该作者
zhangzhao2423 发表于 2019-1-19 17:18
一个字节是一个机器码吗?我数的是12个机器码,中间是不是有哪个是两个机器码的啊

每条指令的机器码不一定相同,有单字节的、两字节的、三字节的。
回复

使用道具 举报

7#
ID:450037 发表于 2019-1-20 10:05 来自手机 | 只看该作者
ahshmj 发表于 2019-1-20 08:01
每条指令的机器码不一定相同,有单字节的、两字节的、三字节的。

我想请问一下,它这个机器码怎么算的啊
MOV  R2,DPH和MOV R3,DPL分别占用几个字节
MOV   R2,#00H和MOV  R3,#00H分别占用几个字节啊?我算出来不止14个机器码了
回复

使用道具 举报

8#
ID:7485 发表于 2019-1-20 18:41 | 只看该作者
第一问:
   操作内容:Rn←(direct),(n=0~7)
    字节数: 2
    机器周期:2
第二问:
    操作内容:Rn←data,(n=0~7)
    字节数: 2
    机器周期:1

你问的4条指令全是2字节。

回复

使用道具 举报

9#
ID:450037 发表于 2019-1-21 07:11 来自手机 | 只看该作者
ahshmj 发表于 2019-1-20 18:41
第一问:
   操作内容:Rn←(direct),(n=0~7)
    字节数: 2

你好前辈,如果给寄存器的算两个字节的话,那么我从查表指令数下来就有16个偏移量啦,这还是不对啊??
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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