基址

在以前,電腦的暫存器都是十六位的,定址空間是二十四位的(記憶體16M),所以單用一個暫存器無法定址到所有地址,因此用兩個暫存器或一個暫存器加一個立即數,用cs,ds,ss,es等以s結尾的暫存器作為段暫存器,用一個暫存器或立即數做偏移量,因為兩個十六位暫存器加起來是三十二位,比數據匯流排位數寬,所以分段定址採用了如下的定址方式:段暫存器×10H(十六進制)+偏移量,這樣所計算出來的就是一個二十四位的數據,就可以定址到所有地址,其中段暫存器×10H(十六進制)所得到的地址就是段的基址,所以基址都是以00(十六進制)結尾的。而現在的暫存器都是三十二位的,定址可達4G,而通常電腦記憶體是沒有大於4G的,所以就不用分段,用一個暫存器就可以定址全部地址了。所以現在電腦的段暫存器都用來有其他的用途。

簡介

基址就一種術語說法 用來概括的形容 起到定位排布作用的不同坐標參考系的起點坐標, 這裡 借用物理名詞 就是為了在計算機微觀抽象的世界中 找到重心與方向,

基址 必須與偏移 對立的理解 缺一則不知所謂, 如果偏移是個動作 那么這個行為的對象就是基址 。

偏移量是相對地址, 是相對於基址的偏移跨步 有的時候是偏移元素量 有的時候是偏移地址量,前者用的居多 在不確定的時候 查詢intel處理器構架 開發人員手冊 資料 ,用元素數量X單位元素所占地址量, 得到後者 也就是實際的地址偏移量。

基址伴隨著一個加到基上的偏移值來確定信息準確的位置(絕對地址)。這一概念與街道地址系統雷同。例如:“大街2010號”由基(大街2000街段)加上偏移值(從街段開始的10號)。在IBMPC和兼容機中的數據按其相對於由段開始的相對偏移位置被識別。

舉例

遊戲中任何數據都在記憶體中存在,不管是血,藍,等級,怪物名字,地圖名字,只要是數據。全在記憶體中。 只要你讀取那個記憶體地址就能顯示出血來。 其實說白了,遊戲客戶端顯示的數據也是讀取的記憶體中的數據而顯示出來的。

struct renwu //人物結構

{

DWORD xue; //血

DWORD lan; //藍

DWORD dengji; //等級

........

};

void init() //遊戲初始化函式

{

struct renwu *dwRW;

dwRW = new struct renwu;

}

遊戲初始化了,dwRW在記憶體中的地址是固定的,這就是基地址

相關詞條

相關搜尋

熱門詞條

聯絡我們