绝对地址是什么

什么是绝对地址

绝对地址(Absolute Address,AA)是指存储控制部件能够识别的主存单元编号(或字节地址),也就是主存单元的实际地址。

在定义上,存储器的绝对地址是指在通信、计算机和数据处理系统中的一个地址方案。这个地址直接鉴别一个存储单元而不使用相关媒体,例如,一个基站地址或相关地址。

绝对地址即为互联网上的独立地址,在任何网站通过这个地址可以直接到达目标网页。包含主域名和目录地址。网络中的绝对地址是指带有网站域名的网页地址。含有绝对地址的网页能够被搜索引擎更好的收录。

绝对地址的访问

片内RAM的使用、片外RAM及I/O口的使用又称为绝对地址访问。C51提供了两种比较常用的访问绝对地址的方法。

1.绝对宏

C51语言编译器提供了一组宏定义来对51单片机的code、data、pdata和xdata空间进行绝对寻址。在程序中,用“#include”即可使用其中声明的宏来访问绝对地址,包括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

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

  unsignedcharxdatabuffer[10] _at_ 0x6000;

  voidmain(void)

  {unsignedcharindex;

  for(index=0;index<i0;index++)

  { buffer[index]=0;}

  }

如果是将片内RAM60H开始的连续10个单元清0,则可以编程如下:

  #include

  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。

总之,相对地址是指从当前网页所在的文件夹开始的网页地址。

在制作网站时,大多数情况下使用的是相对地址。这样,将整个网站复制到任何位置,都不需要重新调整地址。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注