根据此:http://www.8052.com/tutsfr.php,其地址可被8整除的sfrs是可位寻址的。你可以在其上做SETB或CLR等事情。但是它们不重叠其他内存地址吗?我的意思是,例如,P0在80小时。所以P0.0将会是80h,P0.1会是81h。但81h是SP的地址。它们不重叠吗?为什么8051中的某些sfr可以进行位寻址?
0
A
回答
2
你正在混淆一个字节地址的位地址。它们不重叠或指向相同的物理位置。采用位地址(例如,SETB)的指令知道如何将位地址解码为字节地址和位编号。字节地址是通过屏蔽位地址中的3个最低位获得的。位数是通过掩盖最高5位获得的。
例如。位地址87h - >字节地址80h,位#7
0
相关问题
- 1. 如何在IDA Pro中重命名8051的位寻址RAM?
- 2. 为什么打算32位寻址
- 3. 为什么一些8051程序以代码“LOOP:SJMP LOOP”结束
- 4. 了解为什么某些IP地址没有掩码地址
- 5. 为什么某些参数在Delphi中以“A”作为前缀?
- 6. 为什么在某些默认MVC操作中id可为空?
- 7. 与RIP寻址,为什么x86-64仍然需要重定位?
- 8. 有什么办法可以自动运行DLL中的某些代码?
- 9. 为什么网络带宽以MHz为单位进行测量?
- 10. 为什么android studio中的某些方法标有一行?
- 11. 为什么Chrome会在jQuery中的某些行上暂停?
- 12. 为什么Bash历史中的某些行变成“*”?
- 13. 在dotnetnuke的Custom Bussiness Object Class中可以做些什么改进?
- 14. 为什么只有某些Feed可以从Google阅读器中恢复?
- 15. 这些指令是什么类型的寻址?
- 16. 为什么我的Java代码可以获取某些url(网页)的内容?
- 17. 如何让某些表格可以通过Google进行搜索?
- 18. 什么样的UI控件都可以从某个位置
- 19. Python:为什么Queue.queue的某些方法“不可靠”?
- 20. 为什么Swift的可选绑定在某些情况下以'nil'成功?
- 21. 关于寻址内存,GDT的粒度位有什么变化?
- 22. 为什么某些代码行在循环后不能执行?
- 23. 为什么要声明(某些)Spring-Beans
- 24. 为什么pstree中显示的某些进程未在ps -ef中显示?
- 25. 为什么字节寻址内存而不是4字节寻址内存?
- 26. 这些寻址模式有什么区别...?
- 27. 为什么TableView在某些行上添加了不可见的分隔符?
- 28. 为什么Unity不允许我对预制件进行某些更改?
- 29. 为什么我的Cocoa应用程序中的某些行会永远运行?
- 30. 为什么在64位FreeBSD v8.1上运行32位可以执行ELF错误?
非常感谢您的解释。它适用于SFR。但是如果'SETB 01h'呢?它应该是字节地址#20和位#1。我可以说位可寻址内存和字节可寻址内存在不同的内存空间,可以自动由硬件(或介绍)处理? – Grissiom 2010-07-10 15:33:40
是的,正如您所指出的那样,对于非SFR(地址<80h),过程是相同的,除了字节地址附加了20h的偏移量。指令将在内部处理寻址,但要小心将它们视为“不同的”存储空间,它们会重叠。 SETB 01h将在存储单元20h中设置#1位。这可以通过目标地址为20h的字节可寻址MOV指令来覆盖。 MOV 20h,00h。这将清除00h到07h的位地址。程序员要小心;) – mocj 2010-07-12 17:06:41