基址

基址

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

簡介


基址就一種術語說法 用來概括的形容 起到定位排布作用的不同坐標參考系的起點坐標,這裡 借用物理名詞 就是為了在計算機微觀抽象的世界中 找到重心與方向,
基址 必須與偏移 對立的理解 缺一則不知所謂,如果偏移是個動作 那麼這個行為的對象就是基址。
偏移量是相對地址,是相對於基址的偏移跨步 有的時候是偏移元素量 有的時候是偏移地址量,前者用的居多 在不確定的時候 查詢intel處理器構架 開發人員手冊 資料,用元素數量X單位元素所佔地址量,得到後者 也就是實際的地址偏移量。
基址伴隨著一個加到基上的偏移值來確定信息準確的位置(絕對地址)。這一概念與街道地址系統雷同。例如:“大街2010號”由基(大街2000街段)加上偏移值(從街段開始的10號)。在IBMPC和兼容機中的數據按其相對於由段開始的相對偏移位置被識別。

應用


所有的程序都有基址.

舉例


遊戲中任何數據都在內存中存在,不管是血,藍,等級,怪物名字,地圖名字,只要是數據。全在內存中。只要你讀取那個內存地址就能顯示出血來。其實說白了,遊戲客戶端顯示的數據也是讀取的內存中的數據而顯示出來的。
struct renwu //人物結構
{
DWORD xue; //血
DWORD lan; //藍
DWORD dengji; //等級
........
};
void init() //遊戲初始化函數
{
struct renwu *dwRW;
dwRW = new struct renwu;
}
遊戲初始化了,dwRW在內存中的地址是固定的,這就是基地址