2024年1月8日发(作者:)

4.4伪指令及宏指令

1.数据定义及存储器分配伪指令

这类指令有:

DB、DW、

DD、DQ和DT,它们的作用是将所需要的数据放入指定的存储单元中,或者是为程序分配指定数目的存储单元,并根据情况对它们进行初始化。

格式:

「变量名」DB/DW/DD/DQ/DT<表达式>,<表达式>,……;[注释]其中,变量名是任选项,它代表所定义的第一单元的地址。注释也是任选的。

DB:

定义字节变量,其后的每一个表达式占一个字节。

DW:

定义字变量,其后的每一个表达式的值占二个字节,低字节在低地址,高字节在高地址。

DD:

定义双字变量,其后的每一个表达式的值占四个字节,同样低字节在低地址,高字节在高地址。

DQ:

定义四字变量,其后的每一个表达式的值占八个字节,低字节放低地址,高字节放高地址。

DT;定义十个字节,其后的每一个表达式的值占十个字节。一般用于存放压缩的BCD码。

这里的表达式可以是常数、表达式、地址表达式、字符率和数据表格。

1 / 3

下面的例题中,分别说明这几种形式的表达式的应用。

[例

4.11]本例说明数据定义伪指令的使用及存储器的分配方法。已知数据段定义如下,段的起始地址为02000H。

DATA SEMENT

DBYTE DB 10,10H

DWORD0 DW 100,100H

DDWORD DD H

DQWORD DQ 90ABCDEFH

DBYTES DB ’AB’

DWORDS DW ’AB’

DWORDI DW OFFSET DWORD0

DDWORDI DD DDWORD

DATA ENDS

则存储器的分配情况及初始化情况如图4-7所示。

ARR

AY10001ARR

AY2

ARR

AY3

重复xxDUP的应用

2 / 3

用DUP定义重复数据,格式为:

变量名DB/DW/DD/DQ/DT<表达式>DUP(表达式)-0001

---

...--05

...05100

个空出的字单元重复20次共140

个字节DUP左边的表达式表示要重复的次数,右边圆括号中的表达式表示要重复的内容,它可以是下列的内容之一:

(l)一个问号?,表示该单元不初始化,由汇编程序随便预置为什么值;

(2)一个数据项表格;

(3)一个数值表达式或地址表达式。

例12已知数据段定义如下:

DATA SEGMENT

ARRAYI DB 2 DUP(0,1,?)

ARRAYZ DW 100 DUP(?)

ARRAY3 DB 20 DUP(0,1,4DUP

(2),5)

DATA ENDS

则存储器分配图如图4-8所示。

3 / 3