这个 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 };
我正在用汇编语言编辑一个项目,数据段中有一行:
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 };