汇编求解

[复制链接]
2217|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 | 显示全部楼层
不懂汇编,帮顶顶
wh6ic 发表于 2014-6-23 08:54 | 显示全部楼层
注释的原意应该是:小于0x80的是DATA区,大于等于0x80的属于IDATA区。
这个注释的说法不对,DATA区是 0x00~0x7f,IDATA区包含DATA区,是 0x00~0xff,用R0、R1的方法,寻址的都是IDATA区。
 楼主| zwm2011 发表于 2014-6-24 15:53 | 显示全部楼层
wh6ic 发表于 2014-6-23 08:54
注释的原意应该是:小于0x80的是DATA区,大于等于0x80的属于IDATA区。
这个注释的说法不对,DATA区是 0x00~ ...

对的,我就是对这个模糊
 楼主| zwm2011 发表于 2014-6-24 15:55 | 显示全部楼层
NE5532 发表于 2014-6-22 13:53
用指针把#22H地址的数据拷贝到#0A9H地址啊,两个指针当然加载不同的值啦,没看懂楼主想问啥。 ...

上面两项,R1  R0指向区域为什么会不同?
就是这个问题啊
NE5532 发表于 2014-6-24 16:13 | 显示全部楼层
zwm2011 发表于 2014-6-24 15:55
上面两项,R1  R0指向区域为什么会不同?
就是这个问题啊

注释是人写的,出错很正常,一般情况下,如果注释和程序有冲突,以程序为准。
lyjian 发表于 2014-6-26 19:18 来自手机 | 显示全部楼层
这个可以看一下51基础教程,里面说得很明白
lyjian 发表于 2014-6-26 19:31 来自手机 | 显示全部楼层
很简单,直接从51存储结构来说,22H就是属于直接寻址数据区,0A9H就是属于间接寻址数据区。

评论

后来我看了下资料,的确是  发表于 2014-7-1 19:21
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

525

帖子

2

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