这个 db assembly 语句是什么意思?

What does this db assembly statement mean?

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

buffer1 db 80, 0, 80 dup(0)

有人可以详细说明一下吗?

DB伪指令为数据分配内存并用给定值初始化它。您可以通过用逗号分隔它们来指定连续的值。所以 DB 5 将分配一个字节并将其值设置为 5 并且 DB 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 };