存儲段基址
❶ 8086系統中的存儲器為什麼要採用分段結構有什麼好處
8086CPU中的寄存器都是16位的,16位的地址只能訪問64KB的內存。086系統中的物理地址是由20根地址匯流排形成的,要做到對20位地址空間進行訪問,就需要兩部分地址,在8086系統中,就是由段基址和偏移地址兩部分構成。
這兩個地址都是16位的,將這兩個地址採用相加的方式組成20位地址去訪問存儲器。在8086系統的地址形成中,當段地址確定後,該段的定址范圍就已經確定,其容量不大於64KB。同時,通過修改段寄存器內容,可達到邏輯段在整個1MB存儲空間中浮動。
各個邏輯段之間可以緊密相連,可以中間有間隔,也可以相互重疊(部分重疊,甚至完全重疊)。採用段基址和偏移地址方式組成物理地址的優點是:滿足對8086系統的1MB存儲空間的訪問,同時在大部分指令中只要提供16位的偏移地址即可。
(1)存儲段基址擴展閱讀
把段的起始單元的物理地址除以16的結果稱為段地址,它為16位,寫成十六進制是4位:XXXXH。顯然,段地址決定了段在lMB空間中的位置。段內各存儲單元相對段的起始單元都有一個距離,稱為段內偏移量。
在對內存進行操作時,段地址先確定下來,然後給出不同的段內偏移量,就可以實現段內的定址。段地址也是可以改變的,即段在1MB空間中的位置是可變的,因而可實現1MB的全范圍定址。
由於採用了分段結構,因此可以把每一個存儲單元看成是具有兩種類型的地址:物理地址和邏輯地址。物理地址就是實際地址,它具有20位的地址值,它惟一地標識1MB存儲空間的某一存儲單元。CPU與存儲器之間的信息交換都是使用這個物理地址。
邏輯地址是編程時所使用的地址,它由段地址和段內偏移量組成。邏輯地址和物理地址的關系為:物理地址=段地址16+段內偏移量。由邏輯地址形成物理地址是由匯流排介面部件中的電路實現的。
❷ 8086cpu中段寄存器是用來存放存儲器的段基址還是存儲器的邏輯地址
消螞你問的是8086架構的CPU吧,看的很眼熟,很多年都沒接觸了。8086中有4個16位的段寄存器:CS、DS、SS、ES,分別用於存放可執行代碼的代碼段、數據段、堆羨森棧段和其他段的基地址。x0dx0a其中,段寄存器CS指向存放程序的內存段,IP是用來存兄橋畝放下條待執行的指令在該段的偏移量,把它們合在一起可在該內存段內取到下次要執行的指令。x0dx0a段寄存器SS指向用於堆棧的內存段,SP是用來指向該堆棧的棧頂,把它們合在一起可訪問棧頂單元。x0dx0a段寄存器DS指向數據段,ES指向附加段,在存取操作數時,二者之一和一個偏移量合並就可得到存儲單元的物理地址。通常,預設的數據段寄存器是DS。
❸ 8086/8088CPU使用的存儲器為什麼要分段怎麼分段
8086/8088系統中,存儲器為什麼要分段。
一個段最大為多少位元組。
最小為多少位元組。
解:分段的主要目的是便於存儲器的管理,使得可以用16位寄存器來定址20位的內存空間。
一個段最大為64KB,最小為16B。
(3)存儲段基址擴展閱讀:
段的開始地址總是是16的倍數。即:若一個段的起始地址為0000h,那麼另一個段(重疊第一個段)的起始地址將為:0010h(即16),下一個段的起始地址將為0020h(32)。
一個段的段號由其物理地址的前4個16進制數組成。(如:FFFF)
通常,程序只寫出偏移量(從段的第一個位元組到要定位地址的距離),段號可以通過上下文判斷。偏移量大小從0000到FFFF。