**段地址\*16+偏移地址=物理地址**
**偏移地址=物理地址-段地址\*16**
段地址是16位表示的,
10進制*16=2進制左移4位=16進制左移一位
如果物理地址為=21F60H,段地址為2000H,段地址*16即左移一位:20000H。
偏移地址=21F60H-20000H=1F60H
段地址為其他的規律同理:(段地址的范圍是11F7~21F6)

## **為什么要分段?**
內存并沒有分段,段的劃分來自于CPU
8086是16位的,它的尋址范圍是2^16-1=65535=64k,所以一個段的長度最大為64KB
但是內存的容量遠大于64KB,所以我們需要cpu分段來讀寫內存,~~所以偏移地址的值不會超過65535(FFFFH)即偏移地址的范圍是(0000H~FFFFH)~~
例子:有一個數據存放在內存20000H單元中,現在給定段地址為SA,若想用偏移地址尋到此單元.?則SA應滿足的條件是:?最小為???最大為?
段地址SA
最小為:1001H???此時偏移為:FFF0H?
最大為:2000H???此時偏移為:0000H
例子2:
給定段地址為0001H,僅通過變化偏移地址尋址, CPU的尋址范圍為?
關鍵:
* 此題中已經假設地址總線為16位,尋址范圍最大為2的16次方,所以偏移地址變化范圍是 0 ~ 65535,即 0000H ~ FFFFH
* 基礎地址(段地址\[SA\] X 16)+ 偏移地址\[EA\] = 物理地址
```
物理地址=SA*16+EA
EA的變化范圍為0h~ffffh
物理地址范圍為(SA*16+0h)~(SA*16+ffffh)
現在SA=0001h,那么尋址范圍為
(0001h*16+0h)~(0001h*16+ffffh)=0010h~1000fh
```
## **同一段地址,不同的分配方案**
例子:10000H~100FFH這一段地址
方案1:
10000H~100FFH單元可以組成一個段
起始地址(基礎地址)為10000H,他的段地址1000H 除以16即右移一位(10000H段地址取值最大1000H最小1H),大小為100H
方案2:
10000H~1007FH單元可以組成一個段
1008FH~100FFH單元可以組成一個段
起始地址為10000H和10080H,段地址為1000H和1008H,大小均為80H
開始的偏移都是0,后面的偏移分別都是7F
10000H的偏移地址=10000H-1000H\*16=10000H-10000H=0H
1007FH的偏移地址=1007FH-1000H\*16=1007FH-10000H=7FH
10080H的偏移地址=10080H-1008H\*16=10080H-10080H=0H
100FFH的偏移地址=100FFH-1008H\*16=100FFH-10080H=7FH

乘以16必然是16的倍數,所以段地址的起始地址一定也是16的倍數
偏移地址位16位,16位地址的尋址能力為64k,所以一個段的長度為2^16=64k
在8086pc機中存儲單元的地址用兩個元素拉描述,即段地址和偏移地址
數據在21F60H內存單元中,對于8086pc機的描述:
* 數據存在內存2000:1F60單元中
* 數據存在內存的2000段中的1F60H單元中