DOS 内存粗解
今天搞明白了,为啥 dos 有个 A20 地址线,以及 DOS 所谓高位内存的技术了。原因出在那个段地址的计算上面,经常看到的段的计算方式,实际上不止可以访问到 1M 的内存,而是 1M 再多一些: 0xffff * 16 + 0xffff 可以访问到比 1M 高一点的 64k 内存。实际上不是 64k,而是 64k-16 字节。因为 ffff:0010 就是 1M 比较早的 DOS 程序,会利用 8086 的 bug,访问这段内存实际上是访问 0000:0000 这一段内存。后来 80286 出现,这个 bug 就失效了。 由此引申出 DOS 内存的几个概念。