段位址和偏移位址

2021-09-09 02:23:09 字數 747 閱讀 5585

該書所使用的cpu是8086,字長16位,資料匯流排寬度為20位。字長如果是16的話,那麼cpu定址範圍是2^16 = 64k,而資料匯流排寬度是20位的話,那麼通過資料匯流排定址範圍就是2^20 = 1m(這就是為什麼32位機器2^32=4g只能使用4g記憶體空間的原理),這裡就出現矛盾了,一邊是64k,一般是1m,而cpu設計資料匯流排寬度為20的目的也很明顯,增大定址範圍,增大可用記憶體,所以cpu就得變換一下定址方式來使用這20位的資料匯流排。

那麼是怎麼解決的呢?其實也簡單,既然乙個暫存器存不下20位位址,那就用兩個暫存器,而這兩個暫存器其實存的資料不一樣,分別就是段位址和偏移位址。2^20剛好是2^16的四倍大小,也就是二進位制左移4未,16進製制左移1位,也就是要用1的長度來訪問16的長度。

書上說記憶體無分段,也別按照記憶體分段的思路理解,其實是正確的,一塊記憶體區域,從頭至尾,很平滑,並無分段,但是為了相容字長和位址匯流排寬度的問題,我們大概可以想象成記憶體是分了段的,用偏移量達標一段的長度,為64k,那麼2^20就能分2^4=16段,所以記憶體就分為16段,每一段長度64k。這種理解對嗎?答案是不對。原因在於:我們用16位來表示20位,相當於是擴大了16倍,那麼如果16位的位址 x 16就剛好可以表示20位位址。所以在任何時候16位那一頭的位址 x 16就能夠完全表示20位這一頭,於是:

實體地址 = 段位址 x 16 + 偏移位址  這個公式就是成立的,假如段位址和實體地址都是從0開始,那麼任何乙個段位址 x 16 +偏移位址就能夠完全表示實體地址。如果段位址最大值 x 16的值 + 偏移位址最大值 = 實體地址的最大值。

邏輯位址(段位址,偏移位址)知識點全面回顧

1.什麼是邏輯位址?2.為什麼要用邏輯位址?邏輯位址的產生背景 8086cpu訪問儲存器時,位址暫存器 16位 要先向位址匯流排發出位址訊號 位址匯流排是專門用來訪問記憶體位址的,故與記憶體單元有關,20位 而位址暫存器只有16位,從位址暫存器發出的位址訊號,所能訪問的儲存空間只有2 16 6553...

邏輯位址(段位址,偏移位址)知識點全面回顧

1.什麼是邏輯位址?2.為什麼要用邏輯位址?邏輯位址的產生背景 8086cpu訪問儲存器時,位址暫存器 16位 要先向位址匯流排發出位址訊號 位址匯流排是專門用來訪問記憶體位址的,故與記憶體單元有關,20位 而位址暫存器只有16位,從位址暫存器發出的位址訊號,所能訪問的儲存空間只有2 16 6553...

基位址和偏移位址的概念

首先必須明白 cpu和記憶體的區別 cpu 處理器 記憶體是物理資料存放的地方 cpu不直接存放資料而是通過記憶體來存放資料 cpu和記憶體之間通過20條位址匯流排相連線,位址匯流排就是cpu通過位址找到對應的記憶體的物理資料的傳遞工具 計算機只能處理0,1 二進位制資料 每一條線可以處理 0,1 ...