基地址和偏移地址的概念

首先必須明白 cpu和內存的區別

cpu 中央處理器 內存是物理數據存放的地方

cpu不直接存放數據而是通過內存來存放數據

cpu和內存之間通過20條地址總線相連接,地址總線就是cpu通過地址找到對應的內存的物理數據的傳遞工具

計算機只能處理0,1 二進制數據

每一條線可以處理 0,1 兩種類型數據

所以20根線的 總共能擁有 2^20=1048576個不相同的地址 也就是能搜索 1048576個地址範圍內的內存

那麼 一個地址代表一個存儲單元 一個存儲單元能夠存儲 1byte數據

那麼也就是1048576個地址 能夠找到 1048576個1byte數據=1M的數據

也就是說 20位地址總線總共也就能處理1M的內存 數據

 

然後cpu的尋址能力只能16位不能達到20位 怎麼處理了

cpu的地址都是使用16進製表示

最多也只能找到 2的16次方 個地址 也就是65536個地址 只能處理 也就是隻能處理 64K的內存數據  64K內存的電腦能用???
這裏就提出了段的概念 將1G的數據劃分爲 n個段 每一個段 是64K

64K也就是65536個地址   16位的尋址就能找到了這65536個地址了  難道每個64K的 相同的位置的地址都有同一個    但是有n個64MK歇菜了 還是找不到

真正的那個地址啊  

如果在加入一個地址了??? 這個地址用來處理n個 這個地址就是段地址

每一個段也就是每一個64K就是一個基地址  段內的數據的地址就是當前基地址的偏移地址

此時 段地址+偏移地址就能夠找到真正的內存數據了

cpu表示的地址爲:基地址:偏移地址 (2個16位的地址 2byte)

 

而偏移地址相當於在首地址的基礎上 移動的距離


比如 0BAC:0100

0BAC是基地址,0100是偏移地址

0BAC 4位的十六進制 表示 16位的2進制數據 轉換後爲:

0000 1011 1010 1100   

必須要轉換成 20位(也就是5位的16進制) 才能在20位地址總線中傳遞 才能達到 1G的數據訪問範圍

怎麼轉換成 20位 能讓數據傳遞到內存中找到物理數據了

內存的物理地址 =基地址*16+偏移地址

內存的物理地址 =0BAC*16+0100=0BAC0+0100=0BBC0H

0BBC0 就是5位的十六進制  就是 4*5=20位了 可以傳遞到內存了

實際傳遞二進制就是:

0000 1011 1011 1100 0000

20根地址總線就能處理了




32位彙編 32根地址總線 總共能夠直接 就找到  2的32次方個地址 也就是4294967296 byte數據 也就是 4G的內存

而且不在將內存分成一段一段 所有的內存區域都是連續的 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章