当前位置: 代码迷 >> 汇编语言 >> 关于王爽编译语言段地址*16+偏移地址的理解,请前辈指正
  详细解决方案

关于王爽编译语言段地址*16+偏移地址的理解,请前辈指正

热度:5526   发布时间:2013-02-26 00:00:00.0
关于王爽汇编语言段地址*16+偏移地址的理解,请前辈指正
2天前开始学习汇编,看到讲述通过段地址和偏移地址计算物理地址的时候颇为疑惑。闲暇时候想了一下,是不是可以这样理解,请各位前辈指正一下。因为8086地址总线是20位,所以最大寻址为1M,而寄存器只有16位,所以要使得cpu可以寻到1M的内存,就用用2个寄存器来拼。我想不通的地方是:2个16位的寄存器最大可以拼出64KB*64KB的空间,这空间远远大于1M,这样用两个寄存器不是太浪费了嘛,用于段地址的那个寄存器是不是只用到了高位的4位?也就是说只要分16段(2的4次方)就能寻到1M的内存了。
求前辈指点,3Q
------解决方案--------------------------------------------------------
引用:
引用:理解错了啊。地址以16进制显示的,4位16进制不就是16位的寄存器了吗?
有点不大理解你说的只要分16段是什么意思?
2的4次方只能访问到16个内存单元,一个内存单元是1byte。
我的概念就是一个段分配64KB内存,那只要16个段就能分配到1M的内存,只要16段就可以了,是这样吗?

分别以16个段起始地址寻址1M的内存没有问题。
------解决方案--------------------------------------------------------
一头雾水!看后
看之前还明白呢 
lz意思不清楚!
“那只要16个段就能分配到1M的内存,只要16段就可以了”
------解决方案--------------------------------------------------------
就是把段寄存器左移四位加上偏移地址   这就是Intel的规定 
  相关解决方案