天天看点

基本概念学习(9012)---偏移量

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

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

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

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

备注:转自http://baike.baidu.com/view/1254177.htm

***********************************

段地址

本词条由“科普中国”百科科学词条编写与应用工作项目审核

段地址是针对内存的分段而言的,将每一段的段首地址定义为段地址.段地址的存在是由系统的分段存储决定的,通过段地址和偏移地址就能对数据进行寻访。

中文名

别    称

段内相对于段起始地址的偏移值

适用领域范围

存储器

第二段的地址

范围就是256-511

偏移地址(SA)是指段内相对于段起始地址的偏移值,例如一个存储器的大小是1KB,可以把它分为4段,第一段的地址范围就是0—255,第二段的地址范围就是256-511,以此类推。这些段内的偏移地址就是在0-255的范围内的。

而计算它们的物理地址只需要把段地址左移4位,再加上偏移地址就可以了。

备注:转自http://baike.baidu.com/view/883213.htm

**********************************

偏移地址

锁定

偏移地址也称为偏移量,由于8086/8088CPU内部的ALU只能进行16位的运算,而8086/8088有20条地址线,直接寻址能力1MB。因此,8086/8088所使用的20位物理地址,是由相应的段地址加上偏移地址组成的。

外文名

Offset Address

应用学科

计算机

1物理地址计算方法

定义:偏移地址就是计算机里的内存分段后,在段内某一地址相对于段首地址(段地址)的偏移量. 如8086存储系统中 20位的物理地址(就是数据存储的实际地址)=16位的段基地址*16+16位的偏移量

全称:偏移地址(Offset Address)或有效地址(EA,Effective Address)

8086/8088有20条地址线,它的直接寻址能力为1MB。也就是在一个系统中可以有多达1MB的存储器,地址从00000H—FFFFFH。给定任意一个20位物理地址,就可以从中取出需要的指令和操作数。但是8086/8088CPU只能进行16位运算。与地址有关的寄存器SP、IP、BP、SI、DI也都是16位的,所以对地址的运算也只能是16位的。对于8086/8088来说,无论采用哪种寻址方式,寻找操作数的范围最大是2^16,也就是64K。如何才能形成20位的物理地址呢。系统先将1MB存储器以64KB为范围分成若干段。在寻址一个具体物理地址时,由一个基本地址再加上由SP或IP等可由CPU处理的16位偏移量来形成20位物理地址。

当系统需要产生一个20位地址的时候,一个段寄存器会自动被选择。且自动左移4位再与一个16位地址偏移量相加产生所需的20位地址[1] 。

例如:数据段DS寄存器的值=0088H

偏移地址=22H

那么生成的20位物理地址等于 00880H+22H=008A2H

备注:转自http://baike.baidu.com/view/883224.htm