首页 理论教育数据定义伪指令-嵌入式系统原理及应用

数据定义伪指令-嵌入式系统原理及应用

【摘要】:数据定义伪指令用来为数据分配存储单元,建立变量和存储单元之间的联系,并可实现已分配存储单元的初始化。每个双精度浮点数占据两个字单元。例如:9.数据域定义伪指令FIELD格式:标号FIELD表达式功能:FIELD伪指令用于定义一个结构化内存表中的数据域。MAP伪指令定义内存表的首地址,FIELD伪指令定义内存表中的各个数据域,并可以为每个数据域指定一个标号供其他指令引用。

数据定义(Data Definition)伪指令用来为数据分配存储单元,建立变量存储单元之间的联系,并可实现已分配存储单元的初始化。常见的数据定义伪指令有如下几种:

1.字节单元定义伪指令DCB

格式:标号 DCB 表达式

功能:DCB伪指令用于分配一片连续的字节存储单元并用伪指令中指定的表达式初始化。

注意:表达式可以为0~255的数字或字符串。DCB可用“=”代替。

例如:

2.半字单元定义伪指令DCW(或DCWU)

格式:标号 DCW(或DCWU) 表达式

功能:DCW(或DCWU)伪指令用于分配一片连续的半字存储单元并用伪指令中指定的表达式初始化。

注意:表达式可以为程序标号或数字表达式。用DCW分配的字存储单元是半字对齐的,而用DCWU分配的字存储单元并不严格半字对齐。

例如:

3.字单元定义伪指令DCD(或DCDU)

格式:标号 DCD(或DCDU) 表达式

功能:DCD(或DCDU)伪指令用于分配一片连续的字存储单元并用伪指令中指定的表达式初始化。

注意:表达式可以为程序标号或数字表达式。DCD可用“&”代替。用DCD分配的字存储单元是字对齐的,而用DCDU分配的字存储单元并不严格字对齐。

例如:

4.双精度数定义伪指令DCFD(或DCFDU)

格式:标号 DCFD(或DCFDU) 表达式

功能:DCFD(或DCFDU)伪指令用于为双精度浮点数分配一片连续的字存储单元并用伪指令中指定的表达式初始化。每个双精度浮点数占据两个字单元。

注意:用DCFD分配的字存储单元是字对齐的,而用DCFDU分配的字存储单元并不严格字对齐。

例如:

5.单精度数定义伪指令DCFS(或DCFSU)

格式:标号 DCFS(或DCFSU) 表达式

功能:DCFS(或DCFSU)伪指令用于为单精度浮点数分配一片连续的字存储单元并用伪指令中指定的表达式初始化。(www.chuimin.cn)

注意:每个单精度浮点数占据一个字单元。用DCFS分配的字存储单元是字对齐的,而用DCFSU分配的字存储单元并不严格字对齐。

例如:

6.双字单元定义伪指令DCQ(或DCQU)

格式:标号 DCQ(或DCQU) 表达式

功能:DCQ(或DCQU)伪指令用于分配一片以8字节为单位的连续存储区域并用伪指令中指定的表达式初始化。

注意:用DCQ分配的存储单元是字对齐的,而用DCQU分配的存储单元并不严格字对齐。

例如:

7.存储区域定义伪指令SPACE

格式:标号 SPACE 表达式

功能:SPACE伪指令用于分配一片连续的存储区域并初始化为0。

注意:表达式为要分配的字节数。SPACE可用“%”代替。

例如:

8.首地址定义伪指令MAP

格式:MAP 表达式{,基址寄存器}

功能:MAP伪指令用于定义一个结构化内存表的首地址。MAP可用“^”代替。

注意:表达式可以为程序中的标号或数学表达式,基址寄存器为可选项,当基址寄存器选项不存在时,表达式的值即为内存表的首地址;当该选项存在时,内存表的首地址为表达式的值与基址寄存器的和。MAP伪指令通常与FIELD伪指令配合使用来定义结构化内存表。

例如:

9.数据域定义伪指令FIELD

格式:标号 FIELD 表达式

功能:FIELD伪指令用于定义一个结构化内存表中的数据域。FIELD可用“#”代替。表达式的值为当前数据域在内存表中所占的字节数。

注意:FIELD伪指令常与MAP伪指令配合使用来定义结构化内存表。MAP伪指令定义内存表的首地址,FIELD伪指令定义内存表中的各个数据域,并可以为每个数据域指定一个标号供其他指令引用。此外,两个伪指令仅用于定义数据结构,并不实际分配存储单元。

例如: