论坛: 编程破解 标题: 内存编址问题 复制本贴地址    
作者: wywwolf [wywwolf]    论坛用户   登录
若某机内存4MB,按字节编址,为了能存取该内存各地址的内容,
起地址寄存器至少需要二进制多少位?

我找到的答案只说是22位,但没说理由
请帮忙解释一下啊,谢谢了

地主 发表时间: 07/19 12:11

回复: 286 [unique]   版主   登录
内存大小不是主要的,最主要的操作系统的内存访问模式.
对于DOS程序,采用的是实地址模式.而对于Windows方式是保护地址模式.
在实地址模式下.是段地址(16位)+偏移地址(16位).但在访问内存时不是直接二者相加(仍是16位).也不是并起来(变为32位).而是段地址左移4位后和偏移地址相加(所以变成20位).
早期的286地址线只有20根.数据当然也只能表示20位.
22位是不是对.
你可以通过下面方法得到验证:
debug
d 0000:0100
d 0010:0000
这两个地址显示的数据一样.因为他们俩访问的实地址者是:
00000+0100=00100+0000=00100.




B1层 发表时间: 07/20 08:17

回复: windflower [windflower]   论坛用户   登录
  我觉得它这是个理论题目而已,
  并不是现实中的寻址方式
  20位能寻址1M,22位当然应该是4M了。

B2层 发表时间: 07/29 12:56

回复: 286 [unique]   版主   登录
风,照你的说法.
四轮车车速可达200公里/小时.
五轮车车速就应该是250公里/小时了.

:)

B3层 发表时间: 07/29 15:47

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号