我正在使用汇编语言编辑项目,数据段中有一行:
buffer1 db 80, 0, 80 dup(0)
有人可以详细说明吗?
答案 0 :(得分:5)
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 };