找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

51单片机寄存器片外间接寻址的问题(汇编语言)

查看数: 3325 | 评论数: 17 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-11-15 11:53

正文摘要:

在第7行之前,R0的值已经等于20H,A的值已经等于DDH。 第7行 MOVX @R0,A 表示将A的值赋给R0的值所指向的片外RAM的存储单元 但为什么第7行代码在执行完以后,片外RAM的20H的值并没有发生变化呢?

回复

ID:368534 发表于 2022-11-30 11:13
Hephaestus 发表于 2022-11-29 21:26
楼主已经解决问题了,你还在说这些错误的结论用意何在?

xdata用movx指令访问

我能有什么用意??没有仔细看到他的代码而已。你急什么啊?
ID:883242 发表于 2022-11-29 21:26
xdqfc 发表于 2022-11-29 11:29
查idata,不是xdata。

楼主已经解决问题了,你还在说这些错误的结论用意何在?

xdata用movx指令访问
idata用mov @Ri (i=0 or 1)指令访问

你仔细看看楼主的代码!
ID:368534 发表于 2022-11-29 11:29
查idata,不是xdata。
ID:983641 发表于 2022-11-25 17:02
P2是什么?
ID:77589 发表于 2022-11-16 17:52
yzwzfyz 发表于 2022-11-16 13:45
外XRAM地址是16位,含盖0000H-FFFFH。
DPTR是16位,所以用DPTR寻址,你一定能理解。
但R0是8位,你为何没 ...

这才是正解!!!!!!
ID:1003481 发表于 2022-11-16 14:25
答案正如楼上各位所说。
我错误的将R0、R1的寻址和DPTR的内容联系起来了。
我原以为DPTR的高8位(DPH)只要是00H就不会影响工作寄存器片外寻址的地址指向,
我错误的认为:工作寄存器片外寻址时其指向的地址=DPH+R0.
而实际上:P2的值才是地址总线的高8位,工作寄存器片外寻址时其指向的地址=P2+R0,而工作寄存器片外寻址时是不受DPH的影响的。
感谢上面的朋友们的解答!
ID:123289 发表于 2022-11-16 13:45
外XRAM地址是16位,含盖0000H-FFFFH。
DPTR是16位,所以用DPTR寻址,你一定能理解。
但R0是8位,你为何没有提出疑问呢?
还是没有认真读CPU手册,51系统规定,用@R0对XRAM寻址时,高8位隐含在P2中。
去核对一下:P2R0合成的地址看看,是不是也。
或者先将P2清0,再做一次。

劝君认真读一下手册,它是你精通单片机成为高手的必由之路!
ID:883242 发表于 2022-11-16 13:23
这个页地址是标准51没有的,查你用的单片机具体型号的手册吧。
ID:624769 发表于 2022-11-16 11:34
MagicKrse 发表于 2022-11-16 10:31
如果代码没问题的话我就不去深究了,因为我只是理论学习

不深究就学不会啊……
你 页定义了么?
只要定义了页,就能正常写入啊。如图:




ID:1003481 发表于 2022-11-16 10:31
如果代码没问题的话我就不去深究了,因为我只是理论学习
ID:1003481 发表于 2022-11-16 10:07
人中狼 发表于 2022-11-16 09:03
是否有实物外部存储器,软件仿真的话不一定能有结果

用DPTR可以完成操作,但是R0、R1不行。不知道为啥会这样子
ID:384109 发表于 2022-11-16 09:03
是否有实物外部存储器,软件仿真的话不一定能有结果
ID:1003481 发表于 2022-11-16 08:44

往下继续走,X:0020H还是没变
ID:1003481 发表于 2022-11-16 08:43
Hephaestus 发表于 2022-11-15 17:09
你看下X:FF20位置,应该已经改变了。

X:FF20H查不了,是一片空白。不知道是为什么,我用的Keil 4仿真的
ID:624769 发表于 2022-11-15 19:09
再往下走一步。
ID:883242 发表于 2022-11-15 17:09
你看下X:FF20位置,应该已经改变了。

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

Powered by 单片机教程网

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