-
中文名
- 偏移量
-
外文名
- Offset
在早期的8086中
地址线是20位的,而
段地址是16位。在十六进制下就是4位。这样一个
段寄存器就不能完整的描述出内存的地址。所以就和
通用寄存器配用。偏移量存在
通用寄存器中,
段地址则存在
段寄存器中。而地址首的五位(十六进制下,二十
地址线是五位)有个特点,即末尾总是零,所以就取前四位当做
段地址。正好是
段地址的存储空间大小。所以在上图中,按照地址存储时的分法,倒过来组合,即左移四位(二进制下,十六进制是一位。),比如
段地址为1001H(H十六进制之意),左移一位(乘以16),即补零变为10010H,假设
偏移地址是1010H,则实际物理地址就是11100H了。形象来说,
段地址是头,偏移量是实际位置相对头的位置。
段-
寄存器这种格局是早期硬件电路限制留下的一个伤疤。
地址总线在当时有20-bit。然而20-bit的地址不能放到16-bit的
寄存器里,这意味着有4-bit必须放到别的地方。因此,为了访问所有的内存,必须使用两个16-bit
寄存器。
这一设计上的折衷方案导致了今天的段-偏移量格局。最初的设计中,其中一个
寄存器只有4-bit有效,然而为了简化程序,两个寄存器都是16-bit有效,并在执行时求出加权和来标识20-bit地址。
偏移量是16-bit的,因此,一个段是64KB。下面的图可以帮助理解20-bit地址是如何形成的:
段-偏移量标识的地址通常记做 段:偏移量 的形式。
例如:
线切割工艺中,计算钼丝偏移量,即钼丝的直径.
词条标签: