nil*_*ian -2 x86 assembly memory-segmentation x86-16
8086 上段的最小和最大大小是多少?而且,由于最小值,我们可以拥有的最大单独段数是多少?不需要所有的都同时处于活动状态。(重叠是可以接受的)
8086 段寄存器是 16 位的,因此可以有 65536 个段 - 但它们重叠。20 位物理地址是通过将段寄存器左移 4 位并加上地址偏移量获得的。这意味着一个段可以以任何 16 字节的对齐方式开始。从重叠可以看出,有许多方法可以添加一个内存位置,例如0000:0010,0001:0000寻址同一位置。
因为地址偏移也是 16 位,所以任何段的可寻址大小都是 65536 字节。因此,段的最大大小为 65536 字节,最小为 16 字节 - 尽管在 8086 上可以在没有保护的情况下读取/写入整个段。
您的最后一个问题“最大单独段数”是 16 个单独段。再多,它们就会重叠。