⑴ 舉例說明8086中20位物理地址生成過程
現代內存容量太大比如256M,而計算機的數據線往往只有16位、32位或者64位(目前應用很少),他們所能他尋找到的地址空間最大不過是2^16(64K)、2^32(4M)或者2^64(16T),所以內存通常使用段頁式存儲。也就是將內存空間分成若干段,或者若干頁,每段大小是數據線所能訪問到的最大空間。在內存中的實際地址就是所謂的「物理地址」,而邏輯地址就是邏輯段管理內存而形成的。
比如在8086系統中,8086對外連接使用一個20位的線性地址唯一確定一個存儲單元,也就是說:對於每個存儲器單元都有的一個唯一的20位地址,我們稱為該單元的物理地址或絕對地址。
8086在內部結構中和程序設計時採用邏輯段管理內存,就形成了邏輯地址。它的表達形式為「段基地址 : 偏移地址」。
邏輯地址=段基地址 : 偏移地址
段基地址(Segment)——邏輯段在主存中的起始位置,簡稱段地址。由於8086規定段開始於模16地址,所以省略低4位0不顯式表達,段基地址就可以用16位數據表示。
偏移地址(Offset)——主存單元距離段起始位置的偏移量(Displacement)。由於限定每段不超過64KB,所以偏移地址也可以用16位數據表示。
這樣同一個存儲單元就即有物理地址,又有邏輯地址。但是請注意,物理地址是外部連接使用的、唯一的;而邏輯地址是內部和編程使用的、並不唯一。
物理地址和邏輯地址可以互相轉換。
將邏輯地址中的段地址左移4位,加上偏移地址就得到20位物理地址。這里左移的4位是二進制位;如果用十六進製表達地址就是左移一位(不知道為什麼,復習數制內容吧!還不知道為什麼,看疑難解答吧!)。左移4位還可以表達為乘以16,即:段地址×16+偏移地址。
同一個物理地址可以對應多個邏輯地址形式。所以物理地址轉換為邏輯地址,需要明確段基地址或偏移地址,然後同上原則確定另一個地址。
邏輯地址 1460H : 0100H 1380H : 0F00H
物理地址 14700H
於是,對於主存14700H單元,我們可以描述為在1460H(或1380H)段的100H(或F00H)單元,或者說主存1460H : 0100H(或1380H : 0F00H)單元。
⑵ 8086CPU的地址線是20根,最大可定址1MB的存儲空間,為什麼其物理地址范圍從00000H~FFFFFH
答:8086CPU定址范圍1MB。因為8086CPU地址線為20條,2^20=1024KB,即1MB。8086系統中,指令僅給出16位地址,與定址有關的寄存器也只有16位長,因此定址范圍只有64KB,為了定址1MB,所以分成四個邏輯段。當CPU訪問內存時,段寄存器的內容(段基址)自動左移4位(二進制),與段內16位地址偏移量相加,形成20位的物理地址。
採用分段結構的存儲器中,任何一個邏輯地址都由段基址和偏移地址兩部分構成,都是 16位二進制數。
物理地址:存儲器的絕對地址,從00000H~FFFFFH,是CPU訪問存儲器的實際定址地址(也稱為絕對地址)
16位的段基址左移4位(相當於在段基址最低位後添4個「0」),然後與偏移地址相加獲得物理地址,這相當於完成如下的地址運算:
物理地址=段基址×16+偏移地址
?
採用分段結構的存儲器中,任何一個邏輯地址都由段基址和偏移地址兩部分構成,都是 16位二進制數。
物理地址:存儲器的絕對地址,從00000H~FFFFFH,是CPU訪問存儲器的實際定址地址(也稱為絕對地址)
16位的段基址左移4位(相當於在段基址最低位後添4個「0」),然後與偏移地址相加獲得物理地址,這相當於完成如下的地址運算:
物理地址=段基址×16+偏移地址
⑶ 關於8086CPU計算物理地址問題
物理地址=段地址左移4位(即乘以16)+偏移地址
所以,(2988H<<4)+8000H=9880H+8000H=11880H
我的答案有錯,用樓上幾位的吧,
是29880H+8000H=31880H
⑷ 8086/8088存儲器的物理地址是如何形成的
物理地址=段地址左移四位+偏移地址,,4,8086定址採用「段:偏移」的方式罩或(如SS:BP),段地址寄存器和偏移地址寄存器都是16位長的,實際的線性地址是20位,由「(段 << 4) + 偏移」得到。
32位CPU一般定址空間也是32位線,直接產生32位的線性地址(不考慮描述符、分頁等機制),因此不存在上述現象。
另外,相關地,80286後就有了實模式與保護模式的區別(當然,物鋒伍不僅僅是定址方式的區別)。...,2,物理地址=基址X16+偏移地址。這裡面的16是十進制數,化成16進制數正好是10H。式中的物理地址、基址、偏移地址都是16進基檔製表示~,1,
⑸ 8086儲存器系統中物理地址是怎麼樣構成的
8086的物理地址是20位的 ,而8086本身只凳告有16位,所以它的物理地址是由一個段基址和一個偏移地址構成的,例如:DS段的脊橋地址是4B3Ah,它對應的偏移地址SI是1000h,則對應的物棗野明理地址就是 :16*4B3Ah + 1000h = 4C3A0h
⑹ 8086/8088 CPU的20位物理地址是怎樣形成的
(1)Intel的8位機8080CPU,數據匯流排(DB)為8位,地址匯流排(AB)為16位.那麼這個16位地址信息也是要通過8位數據匯流排來傳送,也是要在數據通道中的暫存器,以及在CPU中的寄存器和內存中存放的,但由於AB正好是DB的整數倍,故不會產生矛盾。
(2)但當上升到16位機後,Intel8086/8088CPU的設計由於當年IC集成技術和外封裝及引腳技術的限制,不能超過40個引腳.但又感覺到8位機原來的地址定址能力2^16=64KB太少了,但直接增加到16的整數倍即令AB=32位又是達不到的.故而只能把AB暫時增加4條成為20條.則2^20=1MB的定址能力已經增加了16倍.但此舉卻造成了AB的20位和DB的16位之間的矛盾,20位地址信息既無法在DB上傳送,又無法在16位的CPU寄存器和內存單元中存放.於是應運而生就產生了CPU段結構的原理。
"邏輯地址" 在學術文獻中的解釋:
1、這樣該存儲單元的地址就可以用段基值和段內偏移量來表示,段基值確定它所在的段居於整個存儲空間的位置,偏移量確定它在段內的位置,這種地址表示方式稱為邏輯地址,通常表示為邏輯地址:偏移量的形式(計算機網路全書)。
2、所謂邏輯地址是指按數據的邏輯塊號給出的磁碟的位置(l塊=512字l字=64位)而物理地址則是由磁碟的柱面、頭、段等物理位置所確定的地址(邏輯運算)。
感覺這樣的提問沒有意義
建議自己下去查查資料
⑺ 8086CPU的20位物理地址是如何形成的
採用一種在內部用兩個16位地址合成的方法來形成一個20位的物理地址。地址加法器採用物理地址=段地址×16+偏移地址合成物理地址