老古开发网首页
导航:老古开发网首页文章索引文章分类单片机→[A51 4.1.6 段(SEGMENT)]
| -文章搜索 - 最新文章 - |

A51 4.1.6 段(SEGMENT)

发布时间:2006年7月23日 点击次数:967
来源:   作者:
 
 伪指令SEGMENT被用来声明一个普通段。一个再定位类型(relocation type)和一个地址分配类型(allocation type)可以按如下形式指明:
segment SEGMENT class reloctype alloctype

其中

segment


是分配给段的符号名。该符号名由后面的RSEG伪指令引用。段符号名也可用于表达式中代表由连接/定位器计算的组合段的基地址或起始地址。
class

class是指定段所用的存储类型。class为该段指明了存储空间。参见下面的表格获取更多信息。
reloctype

是该段的再定位类型。它决定连接/定位器要完成什么样的再定位选项。参见下面的表格获取更多信息。
alloctype
是该段的地址分配类型。它决定连接/定位器要完成什么样的再定位选项。参见下面的表格获取更多信息。

    Class(存储类型)

     一个模块中每个段的名称必须是唯一的。但是,连接器将把相同类型的段组合起来。对于在其它源文件模块中定义的段也是如此。class为段指明了存储类型空间。A251区分基本存储类型和用户定义的存储类型。连接/定位器使用class访问属于那一存储类型的所有段。

    基本的存储类型如下表:

基本存储类型 说 明
BIT BIT空间(地址20H .. 2FH)。
CODE CODE空间
CONST CONST空间;同CODE但只能存储常数;通过MOVC访问。
DATA DATA空间(地址0到7FH & SFR寄存器)
EBIT 扩展的251位空间(地址20H .. 7FH)
EDATA EDATA空间
ECONST ECONST空间;同EDATA但只能存储常数
IDATA IDATA空间(地址0到0FFH)
ECODE Intel/Atmel WM 251和Philips 80C51MX存储程序代码的整个地址空间。
HCONST Intel/Atmel WM 251和Philips 80C51MX存储常数的整个地址空间。
HDATA Intel/Atmel WM 251和Philips 80C51MX存储数据的整个地址空间。
XDATA XDATA空间;通过MOVX访问。

    用户定义的存储类型名称(只适用于AX51和A251)

    用户定义的存储类型名称由一个基本的存储类型名称和一个扩展名组成,还要用单引号(')把它括起来。使用它们,我们可以像使用基本的存储类型名称一样访问相同的地址空间。好处是我们可以用一个用户定义的存储类型声名几个段,以后使用连接器把那一类型(及其段)定位在一个特定的物理地址中。参见英文手册336页的“CLASSES”获取如何定位用户定义类型的信息。

    例程

seg1 SEGMENT 'NDATA FLASH'
seg2 SEGMENT 'HCONST BITIMAGE'
seg3 SEGMENT 'DATA1'

    重定位类型(Relocation Type)

    选项重定位类型定义可能由连接/定位器完成的重定位操作。下表列出了正确的重定位类型:

重定位类型 说 明
AT 地址 声明一个绝对段。该段将被定位在指定的地址。
BITADDRESSABLE 声明一个将被放置在位可寻址空间(DATA空间20H到2FH)的段。BITADDRESSABLE只适用于DATA存储类型的段,并且长度不能超过16个字节。
INBLOCK 声明一个必须包含在2048字节模块中的段。该重定位类型只对具有CODE存储类型的段有效。
INPAGE 声明一个必须包含在2048字节页中的段。
OFFS 偏移量 声明一个绝对段。该段被定位在指定类型存储空间起始地址加指定偏移量的位置。与AT重定位类型相比较,它的优点是起始地址可以用Lx51连接/定位器控制指令CLASSES修改。参见英文手册336页的“CLASSES”获取更多信息。
OVERLAYABLE 指明该段可以与其它段共享存储空间。具有该重定位类型的段可以与其它也用OVERLAYABLE重定位类型声明过的段相重叠。当使用该重定位类型时,段名必须遵守C251,CX51,C51或PL/M-51的段名规则。
INSEG 参见C编译器用户指南获取更多信息。

    地址分配类型(Allocation Type)

    选项地址分配类型定义可能由连接/定位器完成的地址分配操作。下表列出了正确的地址分配类型:

地址分配类型 说 明
BIT 为段指明位对齐。对于所有具有BIT存储类型的段这是默认值。
BYTE 为段指明字节对齐。对于除BIT外的所有段,这是默认值。
WORD 为段指明字对齐。
DWORD 为段指明双字对齐。
PAGE 声明一个段的起始地址必须在256字节的页边界上。
BLOCK 声明一个段的起始地址必须在2048字节的块边界上。
SEG 声明一个段的起始地址必须在64K字节的段边界上。

    段声明的例子

IDS     SEGMENT    IDATA

定义一个名为IDS的段,其存储类型为IDATA。

MYSEG   SEGMENT    CODE    AT   0FF2000H

定义一个名为MYSEG的段,其存储类型为CODE,而且被定位在地址0FF2000H。

HDSEG   SEGMENT    HDATA   INSEG  DWORD

定义一个名为HDSEG的段,存储类型为HDATA。该段位于64K字节的段内,并且是DWORD对齐的。

XDSEG   SEGMENT    XDATA   PAGE

定义一个名为XDSEG的段,存储类型为XDATA。该段是PAGE对齐的,也就是说从256字节的页开始。

HCSEG   SEGMENT    HCONST   SEG

定义一个名为HCSEG的段,存储类型为HCONST。 该段是SEGMENT对齐的,也就是说从64K字节段开始。


欢迎进入老古论坛进行讨论
[单片机] 相关文章:
PIC单片机与触摸屏串行通信MODBUS协议
简介:
工控中经常需要观察系统的运行状态或者修改运行参数。 触摸屏 能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。 单片机 广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。触摸屏和单片机 通 ,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国Modicon公司推出的一种有效支持控制器之间以及控制器经由网络(例如以太网)和其它设备之间进行通信的协议。本文以PIC16F877单片机和人机电子有限公司的eView MT510T型触摸屏为例,介绍其通信程序的开发过程。   &nbsp......

单片机控制实时时钟X1226的应用设计
液晶显示模块TC1602A与单片机的接口技术
[转载]嵌入式系统设计方法的演化—— 从单片机到单片系统
[转载]嵌入式实时操作系统的现状和未来
GPS术语缩写
电磁炉精确测温技术现状与发展方向
SPMC65P2404A在电磁炉中的应用(凌阳)
HT46R22单片机在电磁炉功率控制中的应用
基于SN8P1706芯片的电磁炉(源程序)(sonix)
 
下一个:[单片机]带温度测量的LCD显示的实时时钟
简介:
/*********************************************************** SP0605-51/AVR 单片机学习实验开发系统 实验例程( 30 ) 此实验属于综合实验类 , 将 LCD 显示 , 温度测量 , 实时时钟等内容结合起来 , 构成一个复杂 的实验系统 , 完成在 LCD 上显示日历和环境温度 , 可以用于家庭的信息提示和监测系统 通过此实验可以掌握......
 

上一个:[EDA/IC设计][转载]基于FPGA的高速数据采集系统接口设计

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:否 执行时间:16毫秒