|
关于AT89s52的高128RAM地址的问题?
[复制链接]
AT89s52 datasheet原文摘抄:
特殊功能寄存器(SFR)的地址空间映象如表1所示。并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将得到一个随机数据;写入的数据将会无效。
AT89S52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。例如,下面的直接寻址指令访问0A0H(P2口)存储单元MOV 0A0H , #data使用间接寻址方式访问高128 字节RAM。例如,下面的间接寻址方式中,R0 内容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。MOV @R0 , #data堆栈操作也是简介寻址方式。因此,高128字节数据RAM也可用于堆栈空间。
有几个地方弄不懂.如:
1 高128 字节RAM的有部分没有定义不是不可以用吗?那为什么高128字节数据RAM也可用于堆栈空间?堆栈空间不是要连续的吗?
2 间接寻址方式中,R0 内容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。直接寻址指令访问0A0H(P2口)存储单元。是因为是物理分开了,它们是2个不同的存储单位了?那么片内数据存储器不是比256 字节多了吗?
以前看了8051的对于高128Ram还是清楚的,看了s52就甚是矛盾了!望求解答!
|
|