这个db汇编语句是什么意思?

时间:2015-09-21 15:53:50

标签: assembly x86 tasm

我正在使用汇编语言编辑项目,数据段中有一行:

buffer1 db 80, 0, 80 dup(0)

有人可以详细说明吗?

1 个答案:

答案 0 :(得分:5)

DB伪指令为数据分配内存并使用给定值初始化它。您可以通过用逗号分隔连续值来指定连续值。因此DB 5将分配单个字节并将其值设置为5DB 4, 3将分配2个字节并将其值设置为4和3。

X DUP(V)会复制V X次,因此2 DUP(4)就像4, 4

结合这些,我们得到DB 80, 0, 80 DUP(0)就像DB 80, 0, 0, 0, 0, ... 它将分配82个字节,第一个初始化为80,其余为0。

前缀buffer1是缓冲区标签,它允许您从代码中的其他位置引用缓冲区。

这一行与C代码宽松相等:

char buffer1[] = {
    80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0
};

或者,甚至更简单:

char buffer1[82] = { 80, 0 };