找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于单片机DPTR查表类的问题

[复制链接]
跳转到指定楼层
楼主
ID:450037 发表于 2019-1-13 14:00 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
为什么R2R3要先清c然后左移一位啊,clr   c
rlc     a不明白为什么要这么做

Screenshot_20190113-134956.jpg (276.11 KB, 下载次数: 38)

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

使用道具 举报

沙发
ID:467418 发表于 2019-1-13 15:49 | 只看该作者
加法ADD可能会产生进位,然后ADDC是带进位的加法运算,所以C要先清零。(接触单片机没多久,但这应该是一个原因)
回复

使用道具 举报

板凳
ID:467418 发表于 2019-1-13 16:00 | 只看该作者
加法会产生进位,使C置1,所以要先清C,而且,ADDC是带进位的加法计算。
回复

使用道具 举报

地板
ID:94031 发表于 2019-1-13 16:13 | 只看该作者
rlc     a  是循环左移,不清c,c值会左移到a的最低字节。
回复

使用道具 举报

5#
ID:7485 发表于 2019-1-13 18:14 | 只看该作者
RLC是带C的循环左移指令,指令执行后:C的值送入最低位就是A0位,A0位送入A1......,依次往上,最高位A7送入C,执行该指令之前,C中的值不确定,就有可能出错,所以必须清零。RRC指令也一样。只是方向相反。
回复

使用道具 举报

6#
ID:450037 发表于 2019-1-13 18:43 来自手机 | 只看该作者
ahshmj 发表于 2019-1-13 18:14
RLC是带C的循环左移指令,指令执行后:C的值送入最低位就是A0位,A0位送入A1......,依次往上,最高位A7送 ...

程序里循环左移一位是什么意思?为什么要循环左移一位
回复

使用道具 举报

7#
ID:401564 发表于 2019-1-13 20:36 | 只看该作者
前面几个用过汇编16位查表吗?
R2和R3是分别放了一个16位数据的高位和低位,左移一位是为了要乘以2,先清除C标志位,等到低位的R3位移的时候,R3的7位(就是最高位)就会变成C位,之前的清除的C位就变成了R3的0位,再R2带进位位移的时候,C就变成了R2的0了,这样就可以达到一个乘以2的作用
至于为什么要乘以2,因为TAB2:DW  这个表是以两个字节来存放的,因为是占用了两个字节的,乘以2之后,再把这个结果当成表的偏移量来查表,才能得到正确的值
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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