【发布时间】:2010-06-19 03:21:45
【问题描述】:
据此:http://www.8052.com/tutsfr.php,地址可被 8 整除的 sfrs 是位可寻址的。您可以对它们执行 SETB 或 CLR 之类的操作。但是它们不是与其他内存地址重叠吗?我的意思是,例如,P0 在 80 小时内。所以 P0.0 将是 80h,P0.1 将是 81h。但是81h是SP的地址。它们不是重叠的吗?
【问题讨论】:
据此:http://www.8052.com/tutsfr.php,地址可被 8 整除的 sfrs 是位可寻址的。您可以对它们执行 SETB 或 CLR 之类的操作。但是它们不是与其他内存地址重叠吗?我的意思是,例如,P0 在 80 小时内。所以 P0.0 将是 80h,P0.1 将是 81h。但是81h是SP的地址。它们不是重叠的吗?
【问题讨论】:
您将位地址与字节地址混淆了。它们不重叠或指代相同的物理位置。采用位地址的指令(例如 SETB)知道如何将位地址解码为字节地址和位号。字节地址是通过屏蔽位地址中的 3 个最低位来获得的。位号是通过屏蔽最高5位得到的。
例如。位地址 87h --> 字节地址 80h,位 #7
【讨论】:
SETB 01h 呢?它应该是字节地址#20 和位#1。我可以说位可寻址内存和字节可寻址内存在不同的内存空间,可以由硬件(或引入)自动处理吗?
P0.0 和 P0.1 仅指 8 位 P0 寄存器的各个位(据我了解)。
【讨论】: