请教王爽书里第2章的一句话

tjuhcy 2017-06-21 04:54:42
前提:段地址*16+偏移地址=物理地址
关于偏移地址,24页有一句话:
段地址*16必然是16的倍数(没问题),所以一个段的起始地址也一定是16的倍数(同上);偏移地址为16位(没问题),16位地址的寻址能力为64kb,所以一个段的长度最大为64kb(不理解)。
这个段的长度不应该是64kb除以16吗?已经乘过16了啊
...全文
1787 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangqijohn 2018-11-23
  • 打赏
  • 举报
回复
地址加法器提供一个20位的物理地址,由寄存器中段地址和偏移地址组成,如果段寄存器数据占用前4个位置,另一个最多占用16个位置,16个位置所能记录的最大数64k。如果寄存器占了前16位,另一个占后4位,最小能记录16,以上是物理情况。观念上来讲,20位地址对应5位十六进制数,比如:12345个位置,如果把1位看做段,2345位最大存储64k;把12看做段,345最大存储4k;把1234看做段,5最大存储16。
下岗老田 2018-03-30
  • 打赏
  • 举报
回复
我觉得意思是,如果段地址保持不变,只通过偏移地址寻址的话从0000到ffff,正好64K。如果偏移地址再加1,则又到了0000了。
鬼斧计算机 2018-03-17
  • 打赏
  • 举报
回复
在一个段里面,段地址是不变的,偏移地址为16位能标记64x1024个内存单元,一个内存单元是一个字节,所以一个段的最大容量是64Kb.
晨星 2018-03-10
  • 打赏
  • 举报
回复
段地址左移16位,右空空出来的这16位设计上就是用来表示段内地址的啊。那段内不就是2的16次方么。
下班不迟到 2018-01-20
  • 打赏
  • 举报
回复
段的长度最大为偏移地址能表示的最大范围,和段地址无关
cs14789652 2017-12-05
  • 打赏
  • 举报
回复
16为地址就是 0000~FFFF,一共可以表达65536个数位。 65536除以 1024 得到的就是64Kb 举个例子,32位的操作系统, 2的32次方等于4294967296. 除以1024得到K,再除以1024得到M,再除以1024得到G。 这就是32为系统允许识别的最大内存时4G,多了就是浪费。
神童i 2017-11-25
  • 打赏
  • 举报
回复
段地址确定的话,偏移地址的变化范围:0000-ffff(16位); 0 - f 共有十六个数; 对于:aaaa 每个a有十六个取值的话,那么aaaa就可可以表示 16*16*16*16个不同的数,也就是可以表示16*16*16*16个内存单元 (排列组合);0-65535; 一个内存单元是一个字节; 那就是16*16*16*16B = 64KB; 小白理解,刚学汇编。。。。。
  • 打赏
  • 举报
回复
地址的表示方法是cs:ip,一个段,也就是一个cs固定不变,那么ip的取值就是从0000h到ffffh,其中 ffffh换成10进制即为:15*16^3+15*16^2+15*16^1+15*16^0 = 65535,即一共有65536个(加上第一个0),每一个表示一个byte。 那么,65535 byte / 1024 = 64 kbyte。
dlpzgr 2017-10-10
  • 打赏
  • 举报
回复
偏移地址是16位,段长就是2的16次方,所以64K
feekee 2017-06-27
  • 打赏
  • 举报
回复
是这样的,您说的我也没看的太明白 但是,您看,如CS:IP,IP从0000到ffffh,cs才增长1,说明到了另一个段,所以一个段的长度就是10000h,65536 bytes,64kB ho

21,459

社区成员

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

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