絕對地址
出自 MBA智库百科(https://wiki.mbalib.com/)
絕對地址(Absolute Address,AA)
目錄[隱藏] |
絕對地址是指存儲控制部件能夠識別的主存單元編號(或位元組地址),也就是主存單元的實際地址。[1]
在定義上,存儲器的絕對地址是指在通信、電腦和數據處理系統中的一個地址方案。這個地址直接鑒別一個存儲單元而不使用相關媒體,例如,一個基站地址或相關地址。
絕對地址即為互聯網上的獨立地址,在任何網站通過這個地址可以直接到達目標網頁。包含主功能變數名稱和目錄地址。網路中的絕對地址是指帶有網站功能變數名稱的網頁地址。含有絕對地址的網頁能夠被搜索引擎更好的收錄。
絕對地址的訪問[2]
片內RAM的使用、片外RAM及I/O口的使用又稱為絕對地址訪問。C51提供了兩種比較常用的訪問絕對地址的方法。
- 1.絕對巨集
C51語言編譯器提供了一組巨集定義來對51單片機的code、data、pdata和xdata空間進行絕對定址。在程式中,用“#include<absacc.h>”即可使用其中聲明的巨集來訪問絕對地址,包括CBYTE、CWORD、DBYTE、DWORD、XBYTE、XWORD、PBYTE、PWORD,具體使用方法參考absacc.h頭文件。其中:
CBYTE——以位元組形式對code區定址;
CWORD——以字形式對code區定址;
DBYTE——以位元組形式對data區定址;
DWORD——以字形式對data區定址;
XBYTE——以位元組形式對xdata區定址;
XWORD——以字形式對xdata區定址;
PBYTE——以位元組形式對pdata區定址;
PWORD——以字形式對pdata區定址。
例如:
#include<absacc.h>
rval=CBYTE[0x0002] //指向程式存儲器0002H地址
rval=XBYTE[0x0002] //指向外部RAM的0002H地址
- 2._at_關鍵字
可以使用關鍵字_at_對指定的存儲器空間的絕對地址進行訪問,格式如下:
[存儲類型] 數據類型標識符 變數名 _at_地址常數
例如:
struct idata list _at_ 0x40;//指定list結構從內部RAM的40H開始
char xdata text[256] _at_ OxE000;//指定text數組從外部RAM的E000H單元開始
【例】將片外RAM6000H開始的連續10個單元清0。
程式如下:
#include<absacc.h>
unsignedcharxdatabuffer[10] _at_ 0x6000;
voidmain(void)
{unsignedcharindex;
for(index=0;index<i0;index++)
{ buffer[index]=0;}
}
如果是將片內RAM60H開始的連續10個單元清0,則可以編程如下:
#include<absacc.h>
unsigned char data buffer[10] _at_ 0x60;
voidmain(void)
{unsignedcharindex;
for(index=0;index<:i0;index++)
{buffer[index]=0;}
}
絕對地址:互聯網上的獨立地址,在任何網站通過這個地址可以直接到達目標網頁。包含主功能變數名稱和目錄地址。
相對地址:相對於網站的地址,當功能變數名稱改變時,相對地址的“絕對地址”也發生變化。
相對地址是指相對於當前網頁的地址。假如有一個如下圖所示的文件系統結構(圓圈表示文件夾,矩形表示文件):
假設文件3.htm為當前網頁,那麼文件1.htm的相對地址為:../A/1.htm。其中“../”表示上一級目錄。
假設文件4.htm為當前網頁,那麼文件2.htm的相對地址為:../../A/2.htm,而文件6.htm的地址則是:../6.htm,文件5.htm的相對地址則是:5.htm。
假設文件6.htm為當前網頁,那麼文件4.htm的相對地址為:D/4.htm。
總之,相對地址是指從當前網頁所在的文件夾開始的網頁地址。
在製作網站時,大多數情況下使用的是相對地址。這樣,將整個網站複製到任何位置,都不需要重新調整地址。