我不太了解内存分段,如果我们有1MB的内存,那么分段会使其分段为64KB,这是对的吗?
每个段寄存器(CS,DS,SS,ES)都有特定的段,不能更改吗?
帮助理解问题的图片
答案 0 :(得分:0)
我猜你是指旧real mode of x86。
段寄存器中的值不是严格静态的。这个想法是你在x86中有16位的架构地址空间,但这是非常有限的(64 KB),但是20位的物理地址空间。典型地址为16位,但段寄存器中的地址将是20位地址的最高16位。这意味着它们必须存在于2 ^ 4 = 16位边界上。然后硬件假装段寄存器是20位基址,另一个地址(例如指令的地址)被视为偏移量。
编辑:您可能会问的一件事是这些细分是否相互排斥。片段可以部分或完全重叠。这使他们非常强大而且非常危险。