. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于寻址能力的一些胡思乱想。。。。  [待解决] 回复[ 37次 ]   点击[ 1361次 ]  
jaguaer
[帖 主]   [ 发表时间: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根。

    按照这种无论一个内存单元的容量具体是多少,这样的表示方法都不会发生变化。
jimmy2218
[第1楼]   [ 回复时间:2010-08-22 21:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-19 21:57
LZ说得好有理 可是你很粗心啊 书上写的寻址能力是8K而不是8KB 啊  !我差点被你给搅进去
jimmy2218
[第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的硬件知识有一定要求的,你可以先学学数字电路和微机原理这两样,不然真有点费解的,特别是国内的一些教材,省略的太多了,一跳好几步,就一些老鸟教授级的看得懂……
jaguaer
[第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。
这样算有问题吗?
mess
[第4楼]   [ 回复时间:2010-08-23 09:37 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
cpu有13根地址总线,它的寻址能力是可寻住8K个存储单元,即8KB(因为一个存储单元可以存储一个Byte,所以在它们是等价的。-1.6:对于拥有128个存储单元的存储器,我们可以说它的容量是128个字节)
jaguaer
[第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根地址总线。
ttyunix
[第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字节。
如果按字节编址的话,寻址范围只和地址总线有关系。如果按字来编址的话,就会和数据总线,也就是字长挂上关系。
以上是我的一些想法,如有表述不清楚的地方,还请大家指教
onepan
[第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你看看我说是不是对的.?)
onepan
[第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) .
b307077419
[第9楼]   [ 回复时间:2010-09-06 17:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-09-04 10:41
地址总线的宽度决定访问存储单元个数,而每个单元格的位数是定数,当然CPU的寻址能力就能代表了内存的容量咯
tulip784461422
[第10楼]   [ 回复时间:2010-10-19 18:23 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-03-08 11:29
其实楼主应该是仔细想过这个问题了,但是如果按楼主所说,将cpu的寻址能力以K而不是以KB来计算的话,有几个人能看明白呢??如果告诉你cpu的寻址能力是8k,你知道是8k个什么东西吗??还有,楼主所说的按一个字节为单位编址和以两个字节编址有区别吗??固然寻到的整体内存大小不同,但是可以寻到的内存单位数目是一样的!!带上B只是让这个问题变的具体!!个人意见
saveme
[第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的的地址总线应该是通过高低不同的点位来区别数据的。
masmaster
[第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的的地址总线应该是通过高低不同的点位来区别数据的。
------------------
回复:
你是高人!
cy512118091
[第13楼]   [ 回复时间:2010-10-21 16:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-21 07:50
需要指出的一点是KB是一个容量单位,表示可以存储多少大小的数据,而不是一个数量单位。就好像我们说一位帅哥,有人说一升帅哥的吗?
所以楼主所说8KB个内存单元本来就是个错误的说法。
寻址能力是8KB,即要寻找到8KB的大小内存单元的话需要多少根地址总线。
所以,答案是13
goodxiaowan
[第14楼]   [ 回复时间:2010-12-12 21:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-23 12:24
"8K个内存单元"等于8*1024*8个内存单元。
goodxiaowan
[第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!
8782711
[第16楼]   [ 回复时间:2010-12-13 10:38 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-12-12 20:21
地址的寻址能力是最多可寻访的储存单元的数量(即有16根线,可以寻访2^16个地址)
所以无论如何规定储存单元,地址只是寻访一个一个储存单元,而不是储存单元的一个一个二进制信息
例如,假如规定储存单元为4bits=1Byte,有13根地址总线,还是2^13个地址,还是8KB
你说对吗?
liber
[第17楼]   [ 回复时间:2010-12-15 21:21 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:0
注册日期:2010-12-15 20:35
书上的题目是8KB的寻址能力,就是说可以找8K个地址,因为内存以?Byte为单位存放数据的。
8K = 2^3 * 2^10
13根地址线
caizlha
[第18楼]   [ 回复时间:2011-01-13 16:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-26 16:20
以字节为单位
chriskay
[第19楼]   [ 回复时间:2011-05-06 17:01 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-05 14:45
寻址能力是寻址能力,存储单元容量是存储单元容量,不搭界啊!寻址能力是8KB,是说能cpu能管理8*1024个地址,至于每一个地址的单元容量是1bit,还是2bit,是8bit,还是1Mbit,和cpu的地址管理能力一毛钱的关系都没有。
553979404
[第20楼]   [ 回复时间:2011-05-19 11:14 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2011-04-07 10:54
以字节为单位
------------------
回复:
553979404
[第21楼]   [ 回复时间:2011-05-19 11:15 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2011-04-07 10:54
书上的题目是8KB的寻址能力,就是说可以找8K个地址,因为内存以?Byte为单位存放数据的。
8K = 2^3 * 2^10
13根地址线
------------------
回复:
gehao92
[第22楼]   [ 回复时间:2011-06-12 21:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-06-12 21:22
b是单位,请问lz你规定一个byte为4位,答案还是8kb。但是一b不会是4位,这是历史原因。
eax001
[第23楼]   [ 回复时间:2011-07-10 03:11 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:0
注册日期:2009-10-11 02:23
本来以为自己的基础还可以,也认为基础不是那么重要的!但看楼上的各位之后,才知道当基础知识理解出现误差的可怕程度!我要去重新把书本看看
chinatree
[第24楼]   [ 回复时间:2011-07-11 08:49 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
"8K个内存单元"等于8*1024*8个内存单元。
------------------
回复:你乃高人,你那程上八之后就不叫内存单元了,是具体的位数了,要知道地址总线寻找到8kB的内存单元,无论多少位一字节,与地址总线无关,因为传输数据的时候是靠数据总线的。假如说16位每字节的话,地址总线能寻找到16kB,而进行数据传输的时候需要两次才能传完一字节,我也不知道Win7上是什么样子
emperor
[第25楼]   [ 回复时间:2011-08-01 22:51 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2011-07-20 22:33
回复:[第24楼]
------------------
这和win7 有什么关系??
楼主想问的是存储方式的问题吧
tirovstea
[第26楼]   [ 回复时间:2011-08-02 01:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-02 00:36
寻址能力是寻址能力,存储单元容量是存储单元容量,不搭界啊!寻址能力是8KB,是说能cpu能管理8*1024个地址,至于每一个地址的单元容量是1bit,还是2bit,是8bit,还是1Mbit,和cpu的地址管理能力一毛钱的关系都没有。
------------------
回复:感觉19楼得说得挺有道理的
tirovstea
[第27楼]   [ 回复时间:2011-08-02 01:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-02 00:36
寻址能力是寻址能力,存储单元容量是存储单元容量,不搭界啊!寻址能力是8KB,是说能cpu能管理8*1024个地址,至于每一个地址的单元容量是1bit,还是2bit,是8bit,还是1Mbit,和cpu的地址管理能力一毛钱的关系都没有。
------------------
回复:感觉19楼得说得挺有道理的
huameng
[第28楼]   [ 回复时间:2011-08-03 08:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-04 14:44
看看存贮器是怎么做的,存贮器就是以字节为单位的,没有以字为单位的;以字节、字或者双字方式读写存贮器是CPU的能力,说明一次最大能读少字节,CPU的地址线是直接寻址字节地址的,CPU的数据宽度是表示一次能读写1、2或者4个字节数据的能力;别忘了存贮器去讨论CPU了,存贮器就是这么做的。
ameteur
[第29楼]   [ 回复时间:2011-08-04 17:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-04 16:35
我觉得这个问题可以上塑到硬件的底层,我们可以假想:一个存储单元是8bit就是我们说的8位。二进制表示为:00000000~11111111.我们可以假想在一个存储单元里有8个像晶体管这样的家火来表示电压的高低,这个8个像晶体管的家伙,组成一个存储单元,在计算机中,这个存储单元用Byte表示,我猜是不是发明这个的家伙的人,叫比特。
我正想那天找根不用的内存拆开看看。呵呵
chinatree
[第30楼]   [ 回复时间:2011-08-04 23:06 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
记得买个高倍率的放大镜哈,呵呵,要不显微镜好了
ameteur
[第31楼]   [ 回复时间:2011-08-05 10:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-04 16:35
记得买个高倍率的放大镜哈,呵呵,要不显微镜好了
------------------
回复:呵呵,我觉得显微镜才能观察清楚。
boble
[第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,一个是硬件性质决定,一个是人为规定。别搞混了
boble
[第33楼]   [ 回复时间:2011-08-15 21:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-06 18:12
另外,8KB指的是寻址范围表示的容量,也就是可以寻到这么多的空间。而不是内存单元的个数,其实这个B不用换算的,一个内存空间就是1B呀,人为规定,如果要改也可以,只要比现在方便,也可以人为的更改表示方法
thc770407
[第34楼]   [ 回复时间:2011-08-23 17:17 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-23 16:51
以一个字节为寻址单元是硬件已经这样做好了的,它就是一个地址对应一个8位的存储单元
knightno.1
[第35楼]   [ 回复时间:2011-08-25 11:28 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2011-08-06 16:07
答案是13.cpu的寻址确实是个数问题,但这个数问题并非一定要用个数来表示,因为存储单元的容量是统一确定的,所以cpu的 寻址能力 可以用容量来表示。如寻址能力为8kb表示cpu可寻找到8*1024个存储单元。
jingyarufeng
[第36楼]   [ 回复时间:2011-10-05 22:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-10-05 19:31
在计算机中,为方便起见,在讨论存储器容量时 以 2^10=1024 为基本单位,称为1K
pumaintown
[第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,最多是存储器编址多了一倍,和寻址没有关系的。再说改动单元容量这事影响也太大了吧
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved