|
主题 : : 关于寻址能力的一些胡思乱想。。。。 [待解决] |
回复[ 37次 ]
点击[ 1361次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-08-22 11:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-20 12:42 |
本人初学汇编,所以免不了有个毛病,就是做完检测题之后,想找正确答案对一对。
所以,当我看到检测点1.1的第一道题,全世界的答案都是13的时候,本人习惯性的妥协了。
但是,心里还是多少有点不甘心。。。。
于是拿到这里说说,就当是在胡言乱语好了。。。。
先说说8KB的含义,大家都认为是指8K个内存单元,因为一个内存单元正好是一个Byte。我认为这正好是个巧合而已。
请大家想想,如果现在规定,一个内存单元不再是八位了,而是四位,那么大家怎么来表示寻址能力呢?按照前面的思维,应该是8K个0.5B?也就是4KB。又如果一个内存单元是十六位呢,8K个2B吗?也就是16KB。
你们看,同样的地址总线,在单个内存单元容量标准不同的时候,看上去寻址能力(个数)却跟着也发生变化了,这显然是不合理的一种表示方法。
因为,我们要表示的是能够寻找到的内存单元的个数,所以我们不需要知道具体的内存单元的容量。无论内存单元的容量是多少位,同样的总线都能找到一样多的内存单元。
再者,8K个Byte,即8k个字节,是表示一个容量,而这个时候我们并不需要知道具体容量,只需要知道能够寻到的个数。
好比,一个房产中介告诉你他有100套二手房,这是完全可以让人理解的;但是如果他告诉你他有100000平米的房子,你可能就要犯晕了,到底是多少套啊?即便是你事先知道一套房子的面积等于100平米,你也会认为用面积来表示房子的个数是多此一举的行为吧。
因此,把8KB的B用来解释是一个内存单元的单位是不合理的。在我看来,这个8KB应该是8KB个内存单元,而不是8k个内存单元B,8K个内存单元B是毫无意义的一种表示方法。
即是8k*8bit=65536bit的简化写法。而65536=2^16,也就是说,8KB寻址能力的CPU,它的地址总线应该为16根。
按照这种无论一个内存单元的容量具体是多少,这样的表示方法都不会发生变化。 | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-08-22 21:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-19 21:57 |
LZ说得好有理 可是你很粗心啊 书上写的寻址能力是8K而不是8KB 啊 !我差点被你给搅进去 | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-08-22 21:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-19 21:57 |
我不知道是书上错了,还是你理解错了。你的那两个观点都是不对的啊。
地址总线的宽度是16,那么他的cpu寻址范围就是64k,而不是8kb。
具体原因和算法如下:
16根地址线,每一根都有高低两种状态的,分别表示二进制数1,0。
即可以表示:
0000'0000'0000'0000~1111'1111'1111'1111
每个数可以表示一个存储单元所对应的地址(内存里面1个存储单元是1字节(8位)每个字节对应有一个地址)
而上面一共2^16=65536个数,所以有65536(字节)=64KB的范围与之对应。
用16进制表示就是:
0000H~FFFFH
还有数据总线的宽度为8跟,一次传送数据就是1个字节啊,不是64kb的啊
具体原因如下:
按照时钟,首先是地址线上给出地址,正确寻址后才有数据线读或者写数据的。
像你这种16位地址线,8位数据线的机器,就是先有地址线给出16位地址,然后再由数据线在那个地址上写入或者读出数据。
一根数据线上面也是只能有高低电平两种状态,分别表示:0,1,也就是一根数据线一次只可以传输一位的数据(就是一个0,或者一个1),按照单位转换,8位=1字节,也就是说,数据总线的宽度为8跟,一次传送数据为1字节。而不是64kb。
学习汇编语言对于pc的硬件知识有一定要求的,你可以先学学数字电路和微机原理这两样,不然真有点费解的,特别是国内的一些教材,省略的太多了,一跳好几步,就一些老鸟教授级的看得懂…… | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-08-22 21:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-20 12:42 |
啊回一楼, 我的书是第二版的,在第九页的检测点1.1,第一道题就是:一个CPU的寻址能力为8KB,那么它的地址总线的宽度为?
回二楼的,16根总线的寻址能力确实是64K。而8KB正好等于64K,因为1B=8bit,所以8KB=8*8K=64kbit。
这样算有问题吗? | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-08-23 09:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48 |
cpu有13根地址总线,它的寻址能力是可寻住8K个存储单元,即8KB(因为一个存储单元可以存储一个Byte,所以在它们是等价的。-1.6:对于拥有128个存储单元的存储器,我们可以说它的容量是128个字节) | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-08-23 10:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-20 12:42 |
cpu有13根地址总线,它的寻址能力是可寻住8K个存储单元,即8KB(因为一个存储单元可以存储一个Byte,所以在它们是等价的。-1.6:对于拥有128个存储单元的存储器,我们可以说它的容量是128个字节)
------------------
回复:你的说法大部分我认同。但是,假如一开始我们制定的是一个存储单元可以存储2个Byte,请问你怎么表示13根地址总线的寻址能力?是8K2B吗?也就是16KB?
我想说的是,寻址能力应该指的是具体位数,而不是内存单元的容量。即无论一个内存单元有多大(包含多少位),13根地址总线的寻址能力都应该是8K,而不是8KB。在这里8K的意思是有8k个不同的0、1组合,范围是0000~8191,也就是说,从0开始,每增加一个位数,都可以指向一个具体的内存单元。
我们都知道,Byte是一个容量单位,一个Byte等于8bit。而用一个表示容量的B来作为CPU寻址能力的单位,很容易让人误解,很不合理。就好比本来我是说我能找到100套房子(我只需要提供门牌号就好了,不需要知道这套房子的面积大小,假设每套房子都是一样大),但是如果我说我能找到10000平米的房子,你们听了是不是会头疼呢?
那为什么要用容量来表示一个CPU的寻址能力呢?
所以 我认为8KB并非表示能寻址到8K个字节,而是能寻址到8KB=8K*8bit=64K个字节,即对应的是16根地址总线。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-08-26 18:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-16 22:13 |
其实楼主的意思是按字编址和按字节编址这2种情况下的寻址范围。
按字节编址就是内存一个存储单元就是一个字节,cpu的地址总线为N的话,那寻址范围就是2^n字节。
按字编址的话和cpu的字长有关,内存一个存储单元就是一个字长,假设cpu字长为16bit,就是2个字节,寻址范围就是2^n/2字节。
如果按字节编址的话,寻址范围只和地址总线有关系。如果按字来编址的话,就会和数据总线,也就是字长挂上关系。
以上是我的一些想法,如有表述不清楚的地方,还请大家指教 | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-08-29 06:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-27 19:59 |
8kb=1024b*8=8192个存储单元
一个存储单元是一个字节=8位.
cpu寻址能力8kb=8192 所以它的寻址范围是8192个存储单元.
-----------------------------------------------------
所以 我认为8KB并非表示能寻址到8K个字节,而是能寻址到8KB=8K*8bit=64K个字节,即对应的是16根地址总线。
??
我就不明白了,为什么8kb*8bit是什么意思? 存储单元的容量变化跟cpu地总寻址能力有什么联系? 寻址只是找存储单元的门牌号吧 ? 一条地总是一位,两种状态(0,1),所以我觉得你说如果存储单元是4位,16位 跟寻址能力没关系 就算 一个存储单元是4bit ,8bit ,16bit 都跟这不挂钩..(我是被搞晕了,lz你看看我说是不是对的.?) | | |
|
|
|
|
[第8楼]
[ 回复时间:2010-08-29 06:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-27 19:59 |
剪不断 理还乱 是头疼 别是一番滋味在心头...
简单的概括你的问题就是 :CPU地总寻址 寻得是存储单元(门牌号).存储单元容量是存储 数据,指令的.(比如,16进制:89 2进制:1000 1001... 如果存储单元容量是4位 那么取1001 如果存储单元容量是8位 那么取 1000 1001 如果是16位 那么取 0000 0000 1000 1001) . | | |
|
|
|
|
[第9楼]
[ 回复时间:2010-09-06 17:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-09-04 10:41 |
地址总线的宽度决定访问存储单元个数,而每个单元格的位数是定数,当然CPU的寻址能力就能代表了内存的容量咯 | | |
|
|
|
|
[第10楼]
[ 回复时间:2010-10-19 18:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-03-08 11:29 |
其实楼主应该是仔细想过这个问题了,但是如果按楼主所说,将cpu的寻址能力以K而不是以KB来计算的话,有几个人能看明白呢??如果告诉你cpu的寻址能力是8k,你知道是8k个什么东西吗??还有,楼主所说的按一个字节为单位编址和以两个字节编址有区别吗??固然寻到的整体内存大小不同,但是可以寻到的内存单位数目是一样的!!带上B只是让这个问题变的具体!!个人意见 | | |
|
|
|
|
[第11楼]
[ 回复时间:2010-10-21 11:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-10-21 11:37 |
答案是13啊?我一直以为是16
8KB难道不是8192*8=65536=2的16次方吗?
1根总线应该只能表示0,1两总状态。所以CPU的的地址总线应该是通过高低不同的点位来区别数据的。 | | |
|
|
|
|
[第12楼]
[ 回复时间:2010-10-21 11:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
答案是13啊?我一直以为是16
8KB难道不是8192*8=65536=2的16次方吗?
1根总线应该只能表示0,1两总状态。所以CPU的的地址总线应该是通过高低不同的点位来区别数据的。
------------------
回复:
你是高人! | | |
|
|
|
|
[第13楼]
[ 回复时间:2010-10-21 16:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-10-21 07:50 |
需要指出的一点是KB是一个容量单位,表示可以存储多少大小的数据,而不是一个数量单位。就好像我们说一位帅哥,有人说一升帅哥的吗?
所以楼主所说8KB个内存单元本来就是个错误的说法。
寻址能力是8KB,即要寻找到8KB的大小内存单元的话需要多少根地址总线。
所以,答案是13 | | |
|
|
|
|
[第14楼]
[ 回复时间:2010-12-12 21:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-23 12:24 |
"8K个内存单元"等于8*1024*8个内存单元。 | | |
|
|
|
|
[第15楼]
[ 回复时间:2010-12-12 21:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-23 12:24 |
回复:[第5楼]
------------------
回复:你的说法大部分我认同。但是,假如一开始我们制定的是一个存储单元可以存储2个Byte,请问你怎么表示13根地址总线的寻址能力?是8K2B吗?也就是16KB?
假如一个存储单元可以存储2个Byte,那13根地址总线的寻址能力的公式:2的13次方乘上一个存储单元(2Byte)=16KB! | | |
|
|
|
|
[第16楼]
[ 回复时间:2010-12-13 10:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2010-12-12 20:21 |
地址的寻址能力是最多可寻访的储存单元的数量(即有16根线,可以寻访2^16个地址)
所以无论如何规定储存单元,地址只是寻访一个一个储存单元,而不是储存单元的一个一个二进制信息
例如,假如规定储存单元为4bits=1Byte,有13根地址总线,还是2^13个地址,还是8KB
你说对吗? | | |
|
|
|
|
[第17楼]
[ 回复时间:2010-12-15 21:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:8
信誉值:0
注册日期:2010-12-15 20:35 |
书上的题目是8KB的寻址能力,就是说可以找8K个地址,因为内存以?Byte为单位存放数据的。
8K = 2^3 * 2^10
13根地址线 | | |
|
|
|
|
[第18楼]
[ 回复时间:2011-01-13 16:27 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-10-26 16:20 |
|
|
|
|
|
[第19楼]
[ 回复时间:2011-05-06 17:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-05-05 14:45 |
寻址能力是寻址能力,存储单元容量是存储单元容量,不搭界啊!寻址能力是8KB,是说能cpu能管理8*1024个地址,至于每一个地址的单元容量是1bit,还是2bit,是8bit,还是1Mbit,和cpu的地址管理能力一毛钱的关系都没有。 | | |
|
|
|
|
[第20楼]
[ 回复时间:2011-05-19 11:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2011-04-07 10:54 |
以字节为单位
------------------
回复: | | |
|
|
|
|
[第21楼]
[ 回复时间:2011-05-19 11:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2011-04-07 10:54 |
书上的题目是8KB的寻址能力,就是说可以找8K个地址,因为内存以?Byte为单位存放数据的。
8K = 2^3 * 2^10
13根地址线
------------------
回复: | | |
|
|
|
|
[第22楼]
[ 回复时间:2011-06-12 21:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-06-12 21:22 |
b是单位,请问lz你规定一个byte为4位,答案还是8kb。但是一b不会是4位,这是历史原因。 | | |
|
|
|
|
[第23楼]
[ 回复时间:2011-07-10 03:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:1
信誉值:0
注册日期:2009-10-11 02:23 |
本来以为自己的基础还可以,也认为基础不是那么重要的!但看楼上的各位之后,才知道当基础知识理解出现误差的可怕程度!我要去重新把书本看看 | | |
|
|
|
|
[第24楼]
[ 回复时间:2011-07-11 08:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
"8K个内存单元"等于8*1024*8个内存单元。
------------------
回复:你乃高人,你那程上八之后就不叫内存单元了,是具体的位数了,要知道地址总线寻找到8kB的内存单元,无论多少位一字节,与地址总线无关,因为传输数据的时候是靠数据总线的。假如说16位每字节的话,地址总线能寻找到16kB,而进行数据传输的时候需要两次才能传完一字节,我也不知道Win7上是什么样子 | | |
|
|
|
|
[第25楼]
[ 回复时间:2011-08-01 22:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2011-07-20 22:33 |
回复:[第24楼]
------------------
这和win7 有什么关系??
楼主想问的是存储方式的问题吧 | | |
|
|
|
|
[第26楼]
[ 回复时间:2011-08-02 01:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-02 00:36 |
寻址能力是寻址能力,存储单元容量是存储单元容量,不搭界啊!寻址能力是8KB,是说能cpu能管理8*1024个地址,至于每一个地址的单元容量是1bit,还是2bit,是8bit,还是1Mbit,和cpu的地址管理能力一毛钱的关系都没有。
------------------
回复:感觉19楼得说得挺有道理的 | | |
|
|
|
|
[第27楼]
[ 回复时间:2011-08-02 01:51 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-02 00:36 |
寻址能力是寻址能力,存储单元容量是存储单元容量,不搭界啊!寻址能力是8KB,是说能cpu能管理8*1024个地址,至于每一个地址的单元容量是1bit,还是2bit,是8bit,还是1Mbit,和cpu的地址管理能力一毛钱的关系都没有。
------------------
回复:感觉19楼得说得挺有道理的 | | |
|
|
|
|
[第28楼]
[ 回复时间:2011-08-03 08:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-04 14:44 |
看看存贮器是怎么做的,存贮器就是以字节为单位的,没有以字为单位的;以字节、字或者双字方式读写存贮器是CPU的能力,说明一次最大能读少字节,CPU的地址线是直接寻址字节地址的,CPU的数据宽度是表示一次能读写1、2或者4个字节数据的能力;别忘了存贮器去讨论CPU了,存贮器就是这么做的。 | | |
|
|
|
|
[第29楼]
[ 回复时间:2011-08-04 17:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-04 16:35 |
我觉得这个问题可以上塑到硬件的底层,我们可以假想:一个存储单元是8bit就是我们说的8位。二进制表示为:00000000~11111111.我们可以假想在一个存储单元里有8个像晶体管这样的家火来表示电压的高低,这个8个像晶体管的家伙,组成一个存储单元,在计算机中,这个存储单元用Byte表示,我猜是不是发明这个的家伙的人,叫比特。
我正想那天找根不用的内存拆开看看。呵呵 | | |
|
|
|
|
[第30楼]
[ 回复时间:2011-08-04 23:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
|
|
|
|
|
[第31楼]
[ 回复时间:2011-08-05 10:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-04 16:35 |
记得买个高倍率的放大镜哈,呵呵,要不显微镜好了
------------------
回复:呵呵,我觉得显微镜才能观察清楚。 | | |
|
|
|
|
[第32楼]
[ 回复时间:2011-08-15 21:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-06 18:12 |
晕了,1B=2BIT 1B=4BIT 1B=16BIT等等,8KB可寻址2的13次方个内存单元,为什么?
自己看书,“8个BIT组成一个BYTE,也就是通常说的一个字节”这是书上的原话,换句话说,8个BIT组成一个字节,用BYTE来表示,即使你1B=1BIT,那么8KB的寻址空间也是2的13次方个内存空间,只不过存储一个8位的二进制数字需要8个内存空间罢了。
说明白点,就是说1个内存单元的大小就是1个BYTE的大小,而不是说一个内存空间可以存储8BIT,1B=8BIT,两者相等,不是这样,应该是根据内存单元的大小为8BIT,人为的规定1B=8BIT,一个是硬件性质决定,一个是人为规定。别搞混了 | | |
|
|
|
|
[第33楼]
[ 回复时间:2011-08-15 21:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-06 18:12 |
另外,8KB指的是寻址范围表示的容量,也就是可以寻到这么多的空间。而不是内存单元的个数,其实这个B不用换算的,一个内存空间就是1B呀,人为规定,如果要改也可以,只要比现在方便,也可以人为的更改表示方法 | | |
|
|
|
|
[第34楼]
[ 回复时间:2011-08-23 17:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-23 16:51 |
以一个字节为寻址单元是硬件已经这样做好了的,它就是一个地址对应一个8位的存储单元 | | |
|
|
|
|
[第35楼]
[ 回复时间:2011-08-25 11:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2011-08-06 16:07 |
答案是13.cpu的寻址确实是个数问题,但这个数问题并非一定要用个数来表示,因为存储单元的容量是统一确定的,所以cpu的 寻址能力 可以用容量来表示。如寻址能力为8kb表示cpu可寻找到8*1024个存储单元。 | | |
|
|
|
|
[第36楼]
[ 回复时间:2011-10-05 22:00 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-10-05 19:31 |
在计算机中,为方便起见,在讨论存储器容量时 以 2^10=1024 为基本单位,称为1K | | |
|
|
|
|
[第37楼]
[ 回复时间:2012-04-20 16:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2012-04-20 12:47 |
寻址能力是寻址能力,存储单元容量是存储单元容量,不搭界啊!寻址能力是8KB,是说能cpu能管理8*1024个地址,至于每一个地址的单元容量是1bit,还是2bit,是8bit,还是1Mbit,和cpu的地址管理能力一毛钱的关系都没有。
------------------
回复:感觉19楼得说得挺有道理的
------------------
回复:同意,单元容量是规定了的,寻址是针对地址的,也就是存储单元的编号,和具体存储单元的容量没有关系。如果单元容量变了,如8b变4b,最多是存储器编址多了一倍,和寻址没有关系的。再说改动单元容量这事影响也太大了吧 | | |