本帖最后由 人造人 于 2020-4-12 02:08 编辑
假设有 a、b、c 三个段
假设段 a 的段地址是 0,段 a 中有一个字节
那么段 b 的段地址是多少?很明显,至少也得是 1,因为 0 已经分配给段 a 了,段 b 的段地址肯定是不能为 0 了,如果段 a、b、c 紧挨着的话,段 b 的段地址就是 1
段 b 中有 17 个字节,偏移地址从 0 ~ 10h(包括 10h)
那么段 b 中第 0 个字节的物理地址是多少?
段 b 的段地址是 1,第 0 个字节的偏移地址是 0, 1:0 = 1 * 16 + 0 = 16 = 10h
段 b 的第 0 个字节的物理地址是 10h
段 a 紧挨着段 b,那么段 a 的实际物理地址空间就是
0:0 0:1 0:2 0:3 0:4 0:5 0:6 0:7 0:8 0:9 0:a 0:b 0:c 0:d 0:e 0:f
物理地址空间当然就是(上面是段+偏移的形式)
0 1 2 3 4 5 6 7 8 9 a b c d e f
f 的下一个地址是 10h,10h是段 b 的第 0 个字节,段 a 和 段 b 是紧挨着的,所以 10h 之前的内容都是段 a 的,段 a 中确实只定义了 1 个字节,但是其他 15 个字节没办法分配给其他段了
因为不能用段地址 0
请问,如何用段地址 + 偏移的形式表示物理地址 1 ?
只能是 0:1,只有这一种
请问,如何用段地址 + 偏移的形式表示物理地址 10h ?
0:10h 0 * 16 + 16 = 16 = 10h
1:0 这个没有问题吧? 1 * 16 + 0 = 16 = 10h
如果要分配物理地址 10h,段地址 0,已经分配给其他段了,那么还可以使用段地址 1
我不知道这么说你能不能理解,如果你理解了,那么你也能写出段 c 中第 0 个字节的物理地址