马沸腾 发表于 2015-2-16 22:38:07

为什么16位寄存器寻址能力是64K?

看到段寄存器那里,我有些不懂了。为什么十六位寄存器表现出对外的寻址能力是64K,而二十位通路表现出对外寻址能力是一兆。到底谁乘以谁啊?这跟二的二十次方什么关系。十六位寄存器我懂,十六位寄存器跟64K什么关系呀?还有十六位乘以16怎么就多了四个零,怎么又变成二十位了?在线等,解决不了这个我不睡了。

lucky_小鱼 发表于 2015-2-17 12:53:31

我现在也在学习汇编:ton:我的理解是:16位寄存器可以寻找2^16个内存单元(一个内存单元对应一个字节大小)也就是64k,同样20位就是1M。至于20位是由“血汗加工厂”(地址加法器)过来的,段地址16位x16+偏移地址可以理解为:通过这样的处理变成了有5个16进制数的一个地址(16位x16相当于左移一位变成五位的16进制数,然后再加上四位的16进制数结果仍然是五位的16进制数,也就是20位的物理地址了)

马沸腾 发表于 2015-2-17 13:37:33

lucky_小鱼 发表于 2015-2-17 12:53
我现在也在学习汇编我的理解是:16位寄存器可以寻找2^16个内存单元(一个内存单元对应一个字节大小) ...

{:7_126:}好像懂了,依然迷迷糊糊。

lucky_小鱼 发表于 2015-2-17 15:41:00

马沸腾 发表于 2015-2-17 13:37
好像懂了,依然迷迷糊糊。

多看几遍知识点就会懂了,温故而知新{:5_91:}

wizwiz 发表于 2015-2-20 14:17:30

16位寄存器嘛,用二进制表示最小的数是0000000000000000,最大的数是1111111111111111。
换算成十进制数就是0-65535,加上零就是65536。
就是说一共可以存放65536个不同的地址对吧。
一个地址的内存放一个字节(Byte)。
KB = kilobyte = 1024*byte
64KB = 65536byte

zjhwasd 发表于 2015-2-20 16:51:33

我只想告诉你 是怎么算的,2^16/(2^10)=64    2^20/(2^10)=1024(1M)

804260247 发表于 2015-2-20 20:11:56

其实这就是一个排列组合问题。每个内存单元对应一个地址,而每个地址都是二进制形式表示,是独一无二的,每个地址的名字是0和1的排列,一共16位,每一位都有2种可能,所以总共的地址名字有2^16种可能,因此寻址地址就是2^16,也就是64K

zhujy 发表于 2015-2-20 22:57:53

因为16条地址线啊

牡丹花下死做鬼 发表于 2015-2-23 16:28:11

2^16/1024
页: [1]
查看完整版本: 为什么16位寄存器寻址能力是64K?