所有栏目

什么是偏移量

已输入 0 字
优质回答
  • 计算机汇编语言中的偏移量定义为:把存储单元的实际地址与其所在段的段地址之间的距离称为段内偏移,也称为"有效地址或偏移量"。

    段地址左移四位,与有效地址相加,就构成了逻辑地址。一般而言,段地址是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地址是如何形成的:

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

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

    2023-10-24 16:50:35
  • “把存储单元的实际地址与其所在段的段地址之间的距离称为段内偏移,也称为“有效地址或偏移量”。

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

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

    在早期的8086中地址线是20位的,而段地址是16位。在十六进制下就是4位。这样一个段寄存器就不能完整的描述出内存的地址。所以就和通用寄存器配用。偏移量存在通用寄存器中,段地址则存在段寄存器中。

    2023-10-24 16:50:35
  • 一级偏移以及二级偏移其实本质上都是偏移,只是一个搜索到的是‘地址’,而另一个搜索到的是‘数据’而已。具体说就是如果有用到二级偏移,那就好比,第一级指向的是一个人所住的地址(包括小区及门牌号),但是不知道这个人是谁。要想知道这个人是谁,你就得根据这个确切地址去问问看到底住着是谁,这也就是所说的第二级。其实啊,之所以有时候用到二级偏移,主要考虑更合理的存取数据。呵呵,不知这样解释符不符合你的要求。

    2023-10-24 16:50:35
最新问题 全部问题