2天前开始学习汇编,看到讲述通过段地址和偏移地址计算物理地址的时候颇为疑惑。闲暇时候想了一下,是不是可以这样理解,请各位前辈指正一下。因为8086地址总线是20位,所以最大寻址为1M,而寄存器只有16位,所以要使得cpu可以寻到1M的内存,就用用2个寄存器来拼。我想不通的地方是:2个16位的寄存器最大可以拼出64KB*64KB的空间,这空间远远大于1M,这样用两个寄存器不是太浪费了嘛,用于段地址的那个寄存器是不是只用到了高位的4位?也就是说只要分16段(2的4次方)就能寻到1M的内存了。
求前辈指点,3Q
------解决方案--------------------------------------------------------
分别以16个段起始地址寻址1M的内存没有问题。
------解决方案--------------------------------------------------------
一头雾水!看后
看之前还明白呢
lz意思不清楚!
“那只要16个段就能分配到1M的内存,只要16段就可以了”
------解决方案--------------------------------------------------------
就是把段寄存器左移四位加上偏移地址 这就是Intel的规定