打印

汇编求解

[复制链接]
1783|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zwm2011|  楼主 | 2014-6-22 11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DATA 和IDATA区寻址
MOV R1 #22H  设置R1 为指向DATA区内的地址22H的指针
MOV R0 #0A9H  设置R0为指向IDATA区内的地址0A9H的指针
==========================================
上面两项,R1  R0指向区域为什么会不同?
==========================================
MOV A @R1  读入地址22H的数据
MOV @R0 A  将累加器中的数据写入地址A9H
INC R0  RO中的地址变为AAH
INC R1  R1 中的地址变为23H
MOV 34H @R0  将地址AAH中的数据写入34H
MOV @R1 #67H  把立即数写入地址23H
XDATA区寻址
MOV DPTR #3048H  DPTR指向外部存储区
MOVX A @DPTR  读入外部存储区地址3048H中的数
INC DPTR  指针加一
MOV A #26H  立即数26H写入A中
MOVX @DPTR A  将26H写入外部存储区地址3049H中
MOV R0 #87H  R0指向外部存储区地址87H//(R0指向外部存储区???有点模糊)
MOVX A @R0  将外部存储区地址87H中的数读入累加器中

相关帖子

沙发
zwm2011|  楼主 | 2014-6-22 11:22 | 只看该作者
汇编很久都没有碰过,这次再次阅读资料,无意看见其中一段,竟然不解了?????请知道的告知,谢谢!!!1

使用特权

评论回复
板凳
NE5532| | 2014-6-22 13:53 | 只看该作者
用指针把#22H地址的数据拷贝到#0A9H地址啊,两个指针当然加载不同的值啦,没看懂楼主想问啥。

使用特权

评论回复
地板
dirtwillfly| | 2014-6-22 20:59 | 只看该作者
不懂汇编,帮顶顶

使用特权

评论回复
5
wh6ic| | 2014-6-23 08:54 | 只看该作者
注释的原意应该是:小于0x80的是DATA区,大于等于0x80的属于IDATA区。
这个注释的说法不对,DATA区是 0x00~0x7f,IDATA区包含DATA区,是 0x00~0xff,用R0、R1的方法,寻址的都是IDATA区。

使用特权

评论回复
6
zwm2011|  楼主 | 2014-6-24 15:53 | 只看该作者
wh6ic 发表于 2014-6-23 08:54
注释的原意应该是:小于0x80的是DATA区,大于等于0x80的属于IDATA区。
这个注释的说法不对,DATA区是 0x00~ ...

对的,我就是对这个模糊

使用特权

评论回复
7
zwm2011|  楼主 | 2014-6-24 15:55 | 只看该作者
NE5532 发表于 2014-6-22 13:53
用指针把#22H地址的数据拷贝到#0A9H地址啊,两个指针当然加载不同的值啦,没看懂楼主想问啥。 ...

上面两项,R1  R0指向区域为什么会不同?
就是这个问题啊

使用特权

评论回复
8
NE5532| | 2014-6-24 16:13 | 只看该作者
zwm2011 发表于 2014-6-24 15:55
上面两项,R1  R0指向区域为什么会不同?
就是这个问题啊

注释是人写的,出错很正常,一般情况下,如果注释和程序有冲突,以程序为准。

使用特权

评论回复
9
lyjian| | 2014-6-26 19:18 | 只看该作者
这个可以看一下51基础教程,里面说得很明白

使用特权

评论回复
10
lyjian| | 2014-6-26 19:31 | 只看该作者
很简单,直接从51存储结构来说,22H就是属于直接寻址数据区,0A9H就是属于间接寻址数据区。

使用特权

评论回复
评论
zwm2011 2014-7-1 19:21 回复TA
后来我看了下资料,的确是 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

525

帖子

2

粉丝