网站地图
偏移量

计算机汇编语言中的偏移量定义为:把存储单元的实际地址与其所在段的段地址之间的距离称为段内偏移,也称为“有效地址或偏移量”。

段地址左移四位,与有效地址相加,就构成了逻辑地址。一般而言,段地址是cpu自己独立编制的,但是偏移量是程序员编写的。偏移量就是程序的逻辑地址与段首的差值。

在早期的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地址是如何形成的:

段-偏移量标识的地址通常记做 段:偏移量 的形式。

例如:线切割工艺中,计算钼丝偏移量,即钼丝的直径.


相关文章推荐:
计算机 | 汇编语言 | 存储单元 | 实际地址 | 段地址 | 有效地址 | 段地址 | 有效地址 | 逻辑地址 | 段地址 | 逻辑地址 | 地址线 | 段地址 | 段寄存器 | 通用寄存器 | 通用寄存器 | 段地址 | 段寄存器 | 地址线 | 段地址 | 段地址 | 段地址 | 偏移地址 | 段地址 | 实模式 | 保护模式 | 寄存器 | 地址总线 | 寄存器 | 寄存器 | 寄存器 | 线切割 |
相关词汇词典