首页 百科知识 数据定义伪指令

数据定义伪指令

时间:2022-08-25 百科知识 版权反馈
【摘要】:数据定义伪指令为一个数据项分配存储单元,用一个符号名与这个存储单元相联系,且为这个数据提供一个任选的初始值。注释字段用来说明该伪指令的功能,它也是可有可无的。DD伪指令,用来定义双字,其后的每个操作数占有两个字单元。

3.2.2 数据定义伪指令

数据定义伪指令为一个数据项分配存储单元,用一个符号名与这个存储单元相联系,且为这个数据提供一个任选的初始值。

格式:[变量名]助记符 操作数,…,操作数[;注释]

其中变量(V ariable)字段是可有可无的,它用符号地址表示,其作用与指令语句前的标号相同,但它的后面不跟冒号,而且CALL和JMP指令都不能转向此符号地址,如果操作数(Operand)有多个,则汇编程序使其记以第一个字节的偏移地址。注释(Com-ments)字段用来说明该伪指令的功能,它也是可有可无的。助记符(Memonic)字段用来说明所有伪指令的助记符,常用的有以下几种:

DB伪指令,用来定义字节,其后的每个操作数占用一个字节单元。DW伪指令,用来定义字,其后的每个操作数占有一个字单元(低位字节在第一个字节低地址中,高位字节在第二个字节高地址中)。

DD伪指令,用来定义双字,其后的每个操作数占有两个字单元。DQ伪指令,用来定义四个字,其后的每个操作数占有四个字单元(低位字在低地址,高位字在高地址)。

DT伪指令,用来定义十个字节,其后的每个操作数占有十个字节。

操作数可以是各种形式的数据,也可以不是数据,只表明留多少空存储单元,下面举例说明。

1.操作数是常数或表达式,可以是数据,也可以是地址

【例3-19】 DATA_BYTE DB 10,4,10H

DATA_WORD DW 100,100H,-5

DATA_DD DD 3*20,0FFFDH

汇编程序可以在汇编期间,在相应的存储器中存入数据,如图3-1所示。

img63

图3-1 例3-19的汇编结果

2.操作数也可以是字符串

【例3-20】 MESSAG E DB‘A’

STRING DB‘MAY I HELP YOU?’

字符串必须用单引号“′′”括起来。其中也可以是多个字符,注意空格也是字符(ASCII码为20H)。引号中的字符都是ASCII码,STRING字符串汇编后的存储情况如图3-2所示。

img64

图3-2 例3-20的汇编结果存储情况

【例3-21】

DATA DB ′AB′

DATA DW′AB′

这两种伪指令,AB在存储器中的存储情况是不一样的,如图3-3所示。

img65

图3-3 例3-21的汇编结果

注意,当定义和初始化多于两个以上字符的字符串时,只能使用DB伪指令,不能使用DW和DD伪指令,例如下列定义,是错误的:

STRING DW ‘ABCDEF’应改成:

STRING DB ‘ABCDEF’

3.可保留空单元,操作数为“?”

【例3-22】

ABC DB 12H,?,?,24H

DEF DW?,895H,?

GH I DD 1248H,?,0D764H

它们的存储情况如图3-4所示。

img66

图3-4 例3-22的汇编结果

4.操作数字段用复制操作符DUP

格式:rep eat_count DUP(op erand,…,op erand)

其中rep eat_count可以是常数,也可以是表达式,它的值应该是一个正整数,数值范围1~65535(不能超过一段范围),它用来指定括号中的操作数(op erand)的重复次数。

【例3-23】

ARRAY 1 DB 2 DUP(0,1,2,?)

ARRAY 2DB 100DUP(?)

它们汇编后的存储情况如图3-5所示。由图可知,ARRAY 1的语句可等价于

ARRAY 1 DB 0,1,2,?,0,1,2,?

DUP操作数也可嵌套DUP。

【例3-24】

ARRAY 3 DB 100 DUP(0,2DUP(1,2),0,3)汇编后存储情况如图3-6所示。

图3-5 例3-23的汇编结果

img68

图3-6 例3-24的汇编结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈