20选址问题--小弟愚钝

wupangzi 2007-08-07 12:39:30
前面已经提到16位字长的机器可以访问最大存储空间为64K字节,而PC机的最大存储容量为1M(原MS-DOS操作系统下)。要访问1M字节空间的存储器必须有20位地址,用16进制数表示1M字节的地址范围应该为00000-FFFFF。
在1M字节的存储器里,每一个存储单元都有一个唯一的20位地址,称为该存储单元的物理地址。CPU访问存储器时,必须先确定所要访问的存储单元的物理地址才能取得(或存入)该单元的内容。20位物理地址由16位段地址和16位偏移地址组成,段地址是指每一段的起始地址,由于它必须是小段的首地址,所以其低4位一定是0,这样就可以规定段地址只取段起始地址的高16位值。偏移地址则是指在段内相对于段起始地址的偏移值。这样,物理地址的计算方法如下:

把段地址左移4位再加上偏移地址值就形成物理地址。或写成: 16dX段地址+偏移地址=物理地址

疑问:如果是这么算,那么物理地址不是会重复了吗?比如:16*0x0010+0x0000和16*0x0000+0x0100
...全文
91 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hkbyest 2007-08-07
  • 打赏
  • 举报
回复
不同的段地址+偏移地址的组合的确可以表示同一个物理地址,你可以把它们当作逻辑性的表示。
wupangzi 2007-08-07
  • 打赏
  • 举报
回复
大家讲的很有道理。物理地址是不会重复,而表示可能不同,小弟有所领悟。继续学习,有问题再向各位请教。
czlyc006 2007-08-07
  • 打赏
  • 举报
回复
段基址:偏移量是寻址时对地址的标注,任何这样的表示最终都要转化为物理地址,所以物理地址绝对不会重复,只是可以由不同的段基址+偏移量的组合表示而已。
czlyc006 2007-08-07
  • 打赏
  • 举报
回复
是的,较低段基址+较高偏移量完全有可能=较高段基址+较低偏移量,故而在16位汇编下,可以有多种寻址组合达到相同的目的。
yasky1001 2007-08-07
  • 打赏
  • 举报
回复
这种重复叫回绕:ffff:fff0->0x100000,如果A20线为0的话就回绕到0x00000.

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧